2016-08-09 83 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展示的是他必須使用數組而不是字符串。我也更新了你所說的 –

相關問題