繁体   English   中英

在函数中包含的mysqli_real_escape_string中包含数据库连接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM