2017-03-14 11 views
-3

データベースにデータを挿入しようとしていますが、同じプリペアドステートメントで挿入された新しい行のIDを選択したいと思います。これはphpMyAdminのを使用して、そこにコードを入力し正常に動作しますPDOクエリ(挿入と選択)が機能しません

$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 
} 

そこで私は、次のコードを使用しています。しかし、私のPHPスクリプトを使用して、それはデータを挿入しますが、現在のIDを返しません。 しかし私は何の誤りもありません。

他のものを選択しようとした場合とまったく同じです。

+0

http://php.net/manual/en/pdo.error-handling.phpをしたい任意の他の選択(SELECT * from question where id = $idまたはを構築するために行くことができます - - http://php.net/manual/en/function.error-reporting.php --- https://dev.mysql.com/doc/refman/5.7/en/insert-select.html –

+0

'VALUES (:question1)、(:question2); 'おそらくここではセミコロンで、文を終わらせるでしょう。TBH、私はINSERT/SELECTを一度も使用していないので、これは私の推測です。 –

+0

@ Fred-ii - 私が言ったように、私は何のエラーメッセージも出しません。そして、insert-selectコマンドは私が探しているものとは異なります。そして、セミコロンがなければ、全く動作しません。 e。 – Chris1

答えて

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; 
} 

そこから、あなたが

+1

あなたは '' @@ IDENTITYを 'currentID'として使用する必要はありません;最後の挿入IDを使用する場合 –

+0

あなたの編集にまだ構文エラーがありますが、私のdownvoteではありません –

+0

ありがとう、私は 'lastInsertID 、 よく働く。 – Chris1

0

データベースコンソールとは異なり、PHPではデータベースから1つずつクエリを実行しています
だからが行うことになっています

$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"]; 

、あなたが何かを選択しようとしている正確に同じことをやるべき。

関連する問題