2016-08-09 102 views
1

想不通:MySQL的 - 绑定变量的数量为什么这个代码不工作不匹配的令牌数量

$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 
+0

'$ update_SQL-> execute([':asset_tag'=> 5544,':id'=> 23]);'and check .':'is missed –

+0

也许是旧版本的php不支持[]。所以试试:$ update_SQL-> execute(array('asset_tag'=> 5544,'id'=> 23)); – Mimouni

回答

3

你在你的代码错过:: -

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

所以实际上你必须d o是: -

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

+0

啊! 'execute'不会接受一个字符串,它必须是一个数组。得到它了! – daninthemix

+1

@Anant:“:”不是必需品。我每次都没有它,它工作正常。在文档链接中查看关于“VolGas”的评论:http://php.net/manual/fr/pdostatement.execute.php#71929 – Mimouni

+1

@IlyasMimouni我明白了你的观点,但是我想向OP展示的是他必须使用数组而不是字符串。我也更新了你所说的 –

相关问题