我想使用bindParam.这是我的代码的较短版本:$reindex['f_name'] = 'Tom';$reindex['l_name'] = 'Riddle';$reindex['date'] = '2020-12-12';$sql = "INSERT INTO tbl_user (f_name, l_name, date) VALUES (:f_name, :l_name, :date)";$stmt = $pdo->prepare($sql);foreach ($reindex as $key => $value) { echo $key . '<br>'; // look at output echo $value . '<br><br>'; $stmt->bindParam($key, $value);}$stmt->execute();回声输出:f_nameToml_nameRiddle我没有收到任何错误消息。我这样设置错误报告:ini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL);这可行,但我必须单独定义每个绑定:$stmt->execute([ 'f_name' => $reindex['f_name'], 'l_name' => $reindex['l_name'], 'date' => $reindex['date']]);
1 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
如果您从 PDO 手册中应用它
PDOStatement::bindParam
将 PHP 变量绑定到用于准备语句的 SQL 语句中相应的命名或问号占位符。与 PDOStatement::bindValue() 不同,该变量被绑定为一个引用,并且只会在 PDOStatement::execute() 被调用时被评估。
你会明白在你的循环中你使用了相同的变量 X 次。每次循环都覆盖它。
因此,当实际绑定完成时,在您->execute()
准备好的查询时,您只有一个值,这些变量中循环中的最后一个值
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报
0/150
提交
取消