【问题标题】:MySQL - number of bound variables does not match number of tokensMySQL - 绑定变量的数量与令牌的数量不匹配
【发布时间】:2016-08-09 10:20:23
【问题描述】:

无法弄清楚为什么这段代码不起作用:

$update_SQL = $db->prepare($SQL_update);
$update_SQL->execute([$SQL_values]);

这些是插入到这些语句中的两个字符串的转储:

$SQL_update = UPDATE laptops SET asset_tag = :asset_tag WHERE id = :id
$SQL_values = 'asset_tag' => 5544, 'id' => 23

【问题讨论】:

  • $update_SQL->execute([':asset_tag' => 5544, ':id' => 23]); 并检查 .: 是否错过
  • 可能是旧版本的 php 不支持 []。所以试试: $update_SQL->execute(array('asset_tag' => 5544, 'id' => 23));

标签: php mysql pdo


【解决方案1】:

您在代码中错过了::-

$update_SQL = $db->prepare($SQL_update);
$update_SQL->execute([':asset_tag' => 5544, ':id' => 23]);

所以实际上你要做的是:-

$SQL_values =[':asset_tag' => 5544, ':id' => 23]; // create array like this
$update_SQL = $db->prepare($SQL_update);
$update_SQL->execute($SQL_values); // pass that array

或者

$SQL_values =['asset_tag' => 5544, 'id' => 23]; // create array like this
$update_SQL = $db->prepare($SQL_update);
$update_SQL->execute($SQL_values); // pass that array

注意:-execute 不接受字符串,它必须是数组。

【讨论】:

  • 啊! 'execute' 不接受字符串,它必须是一个数组。明白了!
  • @Anant:“:”不是必需品。我每次都在没有它的情况下工作,而且效果很好。在文档链接中查看“VolGas”的评论:php.net/manual/fr/pdostatement.execute.php#71929
  • @IlyasMimouni 我明白了你的意思,但我想向 OP 展示的是他必须使用数组而不是字符串。你说的我也更新了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2014-07-04
  • 2015-07-31
  • 2014-05-26
  • 1970-01-01
相关资源
最近更新 更多