PHP从多维数组准备了插入语句 [英] PHP prepared insert statement from multidimensional array
本文介绍了PHP从多维数组准备了插入语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
更新的代码:
if (isset($_POST['submit'])) {
/* Create a prepared statement */
$query = "INSERT INTO log_dates(week_date, crew_chief, monday_crew) values(?,?,?)";
$stmt = mysqli_prepare($connection, $query);
$returnedData = $_POST['data'];
foreach($returnedData as $data) {
$week_date = $data['week_date'];
$crew_chief = $data['crew_chief'];
$monday_crew = $data['monday_crew'];
$stmt->execute();
}
mysqli_stmt_bind_param($stmt, 'sss', $week_date, $crew_chief, $monday_crew);
/* Execute it */
mysqli_stmt_execute($stmt);
/* Close statement */
mysqli_stmt_close($stmt);
} // end if
这是我的POST数组的样子:
Array ( [0] => Array ( [week_date] => 2013-07-08 - 2013-07-14 ) [1] => Array ( [crew_chief] => Alan ) [2] => Array ( [monday_crew] => dd ) )
推荐答案
这不是绑定参数的方式.您正在将多个参数拍打成一个SINGLE值.绑定调用应为
That's not how you bind parameters. You're slapping your multiple parameters into a SINGLE value. The bind call should be
mysqli_stmt_bind_param($stmt, 'ss', $foo, $bar);
^^--two params
^^^^^^^^^^---two values
foreach($returnedData as $data) {
$bar = $data['crew_chief'];
$foo = $data['week_date'];
$stmt->execute();
}
一旦绑定了变量,只需为其分配新值将导致语句上的下一个-> execute()调用来获取这些新值.
once the variables are bound, simply assigning new values to them will cause the next ->execute() call on the statement to pick up those new values.
这篇关于PHP从多维数组准备了插入语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文