2016-05-03 9 views
1

Ich versuche, meine SQL-Tabelle mit Hilfe dieses PHP-Code zu aktualisieren:PHP mysqli Befehl kann jetzt nicht seinen Fehler ausgeführt

$description = "Something about myself"; 
$insert = $con->prepare("INSERT INTO kys_write (Author, writing , Title , Description , Assets) VALUES (?,?,?,?,?)"); 
$insert->bind_param("ssssi",$author,$data,$title,$description, $ImageExist); 
$insert->execute(); 

$statement = $con->prepare("SELECT id FROM kys_write WHERE Title=?"); 
$statement->bind_param("s",$title); 
$statement->execute(); 
$statement->bind_result($lastId); 

//Everything works fine if this whole part is removed 
$sql = "UPDATE kys_essentials SET LastId=".$lastId; 
if ($con->query($sql) === TRUE) { 
    echo "Record updated successfully"; 
} else { 
    echo "Error updating record: " . $con->error; 
} 

Ich bin eine Störung zu erhalten:

Error updating records:Commands out of sync, you cannot run this command now.

Was dies verursacht und wie kann ich es vermeiden?

+0

Mögliches Duplikat [PHP-Befehle Out of Sync-Fehler] (http: //stackoverflow.com/questions/14554517/php-commands-out-of-sync-error) – e4c5

+0

Mögliches Duplikat von [Nicht synchronisierte Befehle; Sie können diesen Befehl jetzt nicht ausführen] (http://stackoverflow.com/questions/614671/commands-out-of-sync-you-cant-run-this-command-now) –

+0

Ich habe beide oben gesehen aber es hilft nicht! – Jois

Antwort

1

Es ist klar, dass die Ergebnismengen einer vorbereiteten Anweisungsausführung vollständig abgerufen werden müssen, bevor eine andere vorbereitete Anweisung für dieselbe Verbindung ausgeführt wird.

Sie können Ihren Code mit einer Abfrage vereinfachen. keine Verwendung von zusätzlicher Auswahlabfrage

$sql = "UPDATE kys_essentials SET LastId = (SELECT id FROM kys_write WHERE Title='$Title')"; 
if ($con->query($sql) === TRUE) { 
    echo "Record updated successfully"; 
} else { 
    echo "Error updating record: " . $con->error; 
} 
+0

Danke, ich habe es versucht, aber ich erhalte einen Fehler namens überprüfen Sie das Handbuch entsprechen Ihrem mein sql in der Nähe zu verwenden IN – Jois

+0

Fügen Sie Zitate um 'Title = '$ Title'' und chack – Saty

+0

nein still das gleiche ist es Syntaxfehler wie vor – Jois

0

Fetch Ihre $lastId nach der Bindung und setzte ' ' für Wert/s, wie folgt aus:

//your codes 
$statement->bind_result($lastId); 

while ($statement->fetch()){ 
     $sql = "UPDATE kys_essentials SET LastId='".$lastId."'"; 
     if ($con->query($sql) === TRUE){ 
     echo "Record updated successfully"; 
     } else{ 
      echo "Error updating record: " . $con->error; 
     } 
}