2

最後に挿入されたIDを取得してテーブルを更新したいのですが、結果が得られません。ここにクエリがあります:

 $quer = mysql_query("UPDATE date 
                      SET d_startdate = '$start', d_enddate = '$end' 
                      WHERE d_id = LAST_INSERT_ID() AND d_sid = $id");

d_idは主キーであり、d_sidは別のテーブルの外部キーです。

4

4 に答える 4

3

同じテーブルでINSERT操作とUPDATE操作を使用しましたが、正常に機能しています。必要に応じて、このクエリを変更できます。

<?php
$con = mysql_connect("localhost","root","") or die("Could not connect");
mysql_selectdb("test", $con);
$query = 'INSERT INTO item (`name`) VALUES ("DELTaaaA")';
$res = mysql_query($query, $con) or die(mysql_error());
echo "<pre>";
print_r($res);
$query = 'UPDATE item set name="DELTaaaA1" WHERE id = LAST_INSERT_ID()';
$res = mysql_query($query, $con) or die(mysql_error());
print_r($res);
?>

11を返す必要があります

于 2013-01-07T09:23:07.170 に答える
0

その前にこのようなコードを使用 SELECT LAST_INSERT_ID()し、これを変数に割り当ててから、コードでその変数を使用します

于 2013-01-07T09:10:08.197 に答える
0

通常の構文はわかりませんが、PDOの構文は非常に単純で、関数で最後に挿入されたIDを取得できPDO::lastInsertId()ます$myPDOobject->lastInsertId()。詳細はこちら: http: //php.net/manual/en/pdo.lastinsertid.php

于 2013-01-07T09:16:15.790 に答える
0

LAST_INSERT_ID最新 ののIDを提供しますinsert

d_id=10d_idによって設定されたauto increment)を持つ行を追加し、次に(再び、)と。d_sid=20を持つ別の行を追加したとします。d_id=11auto incrementd_sid=30

次に、を使用して最新の挿入を検索しますが、値があり、とに一致する行がないため、d_sid=20を使用してこれを行うことはできません。ほとんどの場合、新しい行を挿入するときに、各カテゴリの最新のものを自分で追跡する必要があります。LAST_INSERT_IDLAST_INSERT_ID11d_idd_sid=20d_id

  • するINSERT
  • SELECTLAST_INSERT_ID(名前を付けるL_ID
  • タプル<d_sid, L_ID>をどこかに保存して、d_sid最新のものINSERTには価値があることを知ってくださいL_ID
  • UPDATEd_sidが必要なテーブルでありd_id、タプルから取得されたテーブル

補足として、は非推奨になっているため、またはmysql_*のような他のものに切り替える必要があります。mysqliPDO

于 2013-01-07T09:31:37.893 に答える