MySQL - 绑定变量的数量与令牌的数量不匹配

时间:2016-08-09 10:20:24

标签: php mysql pdo

无法弄清楚此代码无效的原因:

$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

1 个答案:

答案 0 :(得分:3)

您错过了代码中的:: -

$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不接受字符串,它必须是数组。