2016-08-09 53 views
1

Kann nicht herausfinden, warum dieser Code nicht funktioniert:MySQL - Anzahl der gebundenen Variablen nicht übereinstimmt Anzahl von Token

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

Und diese sind Deponien der beiden Strings in diesen Aussagen eingefügt werden:

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

'$ update_SQL-> ausführen ([': asset_tag' => 5544, ': id' => 23]);' und check. ':' Ist verpasst –

+0

vielleicht eine alte Version von PHP, die nicht unterstützt []. Versuchen Sie also: $ update_SQL-> execute (array ('asset_tag' => 5544, 'id' => 23)); – Mimouni

Antwort

3

Sie verfehlten : im Code: -

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

Also eigentlich, was Sie d haben o ist: -

$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 

Oder

$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 

Hinweis: - execute wird keine Zeichenfolge akzeptieren, es muss ein Array sein.

+0

Ahhh! 'execute' akzeptiert keine Zeichenfolge, es muss ein Array sein. Ich habs! – daninthemix

+1

@Anant: ":" sind keine Notwendigkeit. Ich arbeite jedes Mal ohne es und es funktioniert gut. Werfen Sie einen Blick auf den Kommentar von "VolGas" in der Dokumentation Link: http: //php.net/manual/fr/pdostatement.execute.php#71929 – Mimouni

+1

@IlyasMimouni Ich habe Ihren Punkt, aber was ich OP zeigen möchten, ist das Er muss Array nicht die Zeichenfolge verwenden. Ich habe das auch aktualisiert, was du gesagt hast –