2017-03-14 5 views
-3

Ich versuche, Daten in meine Datenbank einzufügen und mit der gleichen vorbereiteten Anweisung möchte ich die ID der neu eingefügten Zeile auswählen.PDO Abfrage (Einfügen und Auswählen) funktioniert nicht

Deshalb verwende ich den folgenden Code:

$stmt = $pdo->prepare("INSERT INTO questions (question) VALUES (:question1), (:question2); SELECT @@IDENTITY as 'currentID';"); 

if ($stmt -> execute(array(":question1" => $_POST["question1"], ":question2" => $_POST["question2"]))) { 
    $row = $stmt->fetch(); 
    echo $row["currentID"]; //doesn't output anything 
    echo "hey"; //gets outputted 
} 

Das mit phpMyAdmin gut funktioniert und den Code dort eingeben. Aber mit meinem PHP-Skript fügt es die Daten ein, aber es gibt nicht die aktuelleID zurück. Aber ich bekomme keinen Fehler.

Genau das gleiche, wenn ich versuche, etwas anderes zu wählen.

+0

http://php.net/manual/en/pdo.error-handling.php bauen wollen - - http://php.net/manual/en/function.error-reporting.php --- https://dev.mysql.com/doc/refman/5.7/en/insert-select.html –

+0

'WERTE (: question1), (: question2); '

+0

@ Fred-ii - Wie gesagt, bekomme ich keine Fehlermeldung, und der Befehl insert-select unterscheidet sich von dem, was ich suche, und ohne das Semikolon funktioniert es überhaupt nicht und ich bekomme eine Fehlermeldung e. – Chris1

Antwort

0
$stmt = $pdo->prepare("INSERT INTO questions (question1, question2) VALUES (:question1), (:question2)"); 

if ($stmt -> execute(array(":question1" => $_POST["question1"], ":question2" => $_POST["question2"]))) { 
    $id = $pdo->lastInsertID(); 
    echo $id; 
} 

Von dort aus können Sie gehen auf eine ausgewählte (SELECT * from question where id = $id oder was auch immer Sie tun

+1

Sie brauchen nicht diese SELECT @ IDENTITY als 'currentID', 'wenn Sie letzten Einsatz ID –

+0

verwenden Ihre Bearbeitung immer noch Syntaxfehler, nicht meine Downvote –

+0

Danke, ich wusste nicht über' lastInsertID() ' , funktioniert super. – Chris1

0

Im Gegensatz zur Datenbank-Konsole führen Sie in PHP Abfragen für eine Datenbank eins nach dem anderen.
So werden Sie tun sollten:

$stmt = $pdo->prepare("INSERT INTO questions (question) VALUES (:question1), (:question2)"); 
$stmt -> execute(array(":question1" => $_POST["question1"], ":question2" => $_POST["question2"])); 

$stmt = $pdo->query("SELECT @@IDENTITY as 'currentID'"); 
$row = $stmt->fetch(); 
echo $row["currentID"]; 

und Sie sollten versuchen, tun genau das gleiche, etwas anderes zu wählen.

Verwandte Themen