我没有大量使用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
,第二个是字符串,但我很难知道如何将函数格式化为也包括数据库连接。
请有人帮忙吗?
非常感谢先进:)
答案 0 :(得分:2)
你不能将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
,因为在匿名函数中$ con是不可见的。
答案 1 :(得分:1)
在程序模式下使用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));