此问题已在此处有答案:
Mysqli prepared statements build INSERT query dynamically from array(1个答案)
4小时前关闭
我希望能够做的是创建一个准备好的语句,它将根据输入的数组插入值,该数组将是动态的。我所说的动态是指通过添加一个额外的行来更改数组$table
的能力,例如下面注解掉的一行,它可以正确地发送和插入值到表中,而不管有多少值存在。由于我新使用了预处理语句,我不能只使用以前的方法:
INSERT INTO table ($fields) VALUES ($data)
字符串
因为这是不安全的,并且对SQL注入开放。
$table = array();
$table['Favorite_Chocolate'] = 'Milk';
$table['Favorite_Cake'] = 'Vanilla';
$table['Favorite_IceCream'] = 'Neapolitan';
//$table['Favorite_Candy'] = 'Taffy';
function magic_insert ($table, $dbc) {
if ($stmt = mysqli_prepare($dbc, "INSERT INTO mytable (?, ?, ?) VALUES (?, ?, ?)")) {
mysqli_stmt_bind_param($stmt, "ssssss", $1, $2, $3, $4, $5, $6);
$1 = array_keys($table)[0];
$2 = array_keys($table)[1];
$3 = array_keys($table)[2];
$4 = array_values($table)[0];
$5 = array_values($table)[1];
$6 = array_values($table)[2];
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
}
}
型
2条答案
按热度按时间m0rkklqb1#
我推荐使用PHP的PDO函数(主要与面向对象编程的类结合使用)。你可以在这里找到一个很好的PDO介绍:http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
oalqel3c2#
我想这就是他想要的。
字符串