0

いくつかの調査を行った後、Output 句が必要だと思います。基本的に、サーバーにアップロードしているファイルの場所を受け取ったときに、以下の SQL を取得して指定されたテーブルに挿入しています。テーブルにアップロードすると、ID は自動インクリメント フィールドであり、主キーです。

$conn = mysqli_connect($DBHOSTmy, $DBuser, $DBpass, $DBmy) or die("An error occurred connecting to the database " . mysqli_error($conn));

$query = "INSERT INTO ebwf (src,loc,iq,wq,pq) OUTPUT Inserted.id, Inserted.src, Inserted.loc, Inserted.iq, Inserted.wq, Inserted.pq VALUES ('" . $source . "','" . $finalPdf . "','y',0,0);";

echo $query;

$result = $conn->query($query); 

echo $result->num_rows;


$conn->close();

これを実行すると が返されますがINSERT INTO ebwf (src,loc,iq,wq,pq) OUTPUT Inserted.src, Inserted.loc, Inserted.iq, Inserted.wq, Inserted.pq VALUES ('m','scan/WF_153_140812113520.pdf','y',0,0);、number 行は返されません。

挿入された行の今すぐ ID が本当に必要ですが、これらのフィールドをすべて取得できれば素晴らしいことです。

いくつかの異なる場所から OUTPUT 句の使用法をほとんどコピーしましたが、返されないために何が間違っているのかわかりません...

これを書いている間、私はいくつかの調査をしようとしています.人々は私がそれを欠いていると思っているので、私は良い回答率を持っていませんでした. ...クエリを次のように変更しました。

$query = "DECLARE @OutputTbl TABLE (id INT, src VARCHAR, loc VARCHAR, iq INT, wq INT, pq INT);

INSERT INTO ebwf (src,loc,iq,wq,pq) OUTPUT Inserted.id, Inserted.src, Inserted.loc, Inserted.iq, Inserted.wq, Inserted.pq INTO @OutputTbl(id, src, loc, iq, wq, pq) VALUES ('" . $source . "','" . $finalPdf . "','y',0,0);";

悲しいことに、まだ何も得られません。次に何をすべきかについて、これで十分な情報が得られることを願っています。

4

1 に答える 1

2

@cmorrissey は素晴らしい解決策を提供してくれました...

$last_insert_id = $conn->insert_id;

これは、最後に挿入された ID を返します (自動インクリメントされる主キーが最も正しい説明だと思います)。これは OUTPUT よりも使用する方が適切です。OUTPUT を使用するのが間違っている理由はよくわかりません。これは非常に多くの場所で見られ、これはユーザーから 1 回だけです。

于 2014-08-13T12:15:54.607 に答える