为了账号安全,请及时绑定邮箱和手机立即绑定

循环内 PDO 语句的绑定参数不起作用

循环内 PDO 语句的绑定参数不起作用

PHP
POPMUISE 2023-04-02 10:41:13
我想使用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()准备好的查询时,您只有一个值,这些变量中循环中的最后一个值


查看完整回答
反对 回复 2023-04-02
  • 1 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信