[英]Including database connection in mysqli_real_escape_string that is contained in a function
我不是很容易在PHP上使用,而是使用函数将数据从数组插入我的数据库使用mysqli
。
功能如下: -
$con=mysqli_connect("host","user","password","database");
function mysql_insert($con, $table, $inserts) {
$values = array_map('mysqli_real_escape_string', array_values($inserts));
$keys = array_keys($inserts);
return mysqli_query($con, 'INSERT INTO `'.$table.'` (`'.implode('`,`', $keys).'`) VALUES (\''.implode('\',\'', $values).'\')');
mysqli_close($con);
}
这是阵列: -
mysql_insert($con, 'table_name', array(
'id' => NULL,
'key1' => 'value1',
'key2' => 'value2',
'Key3' => 'value3'
));
我收到了错误
警告:mysqli_real_escape_string()只需要2个参数,在XXX中给出1
我知道mysqli_real_escape_string
需要两个参数,第一个是$con
,第二个是字符串,但我很难知道如何格式化我的函数中的代码以包含数据库连接。
请任何人可以帮忙吗?
非常感谢先进的:)
你不能将array_map与mysqli_real_escape_string一起使用,因为你只能传递一个参数。 但是你可以添加一个调用mysqli_real_escape_string的方法 - 这可以像这样内联定义
$values = array_map(function($item) use ($con) {
return mysqli_real_escape_string($con, $item);
}, array_values($inserts));
请记住,您必须使用use
,因为在anonym函数中$ con是不可见的。
当您在过程模式中使用mysqli_real_escape_string时,您需要传递“链接”,因此您需要为回调创建自定义函数
function array_map_callback($a)
{
global $con;
return mysqli_real_escape_string($con, $a);
}
然后用
$values = array_map('array_map_callback', array_values($inserts));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.