0

テーブルでクエリを実行して行を作成し、自動インクリメントされた「id」番号を取得して、関連付けられたレコードに関連付けようとしています。PHP を使用してクエリを送信し、ローカルの WAMP ホストとリモート ホストでテストしました。これは私のコードです:

$myemail = someEmailAddress

$q = mysqli_query($cxn,"INSERT INTO `purchases`(`id`, `email`) 
VALUES (NULL , '$myemail'); 
SELECT LAST_INSERT_ID();") or die(mysql_error());

このビットを取り出すと:

SELECT LAST_INSERT_ID();

クエリは正常に実行され、正しく自動インクリメントされた「id」を持つ光沢のある新しいレコードを取得しましたが、元に戻しても何も起こりません。ちなみに、私の WAMP サーバーの phpMyAdmin の SQL ウィンドウで同じクエリを実行すると、探していた結果が得られます。

問題は、同じ文字列で複数のクエリを実行することにあると思います。私が見る限り、構文は正しいので、私が実行しているサーバーに問題がありますか?

私が達成したいことを説明しましょう。私は自分でビジネスを始めており、顧客がオンラインで予約できるようにしたいと考えています。顧客が同時に予約する可能性のある個々のイベントを 1 つの請求書にまとめたいと考えています。セッション内のデータを収集する配列 ($_SESSION[basket]) があり、予約の時点で、自動インクリメントの主キー「id」を持つ「購入」テーブルに新しいレコードを作成したいと考えています。多対多の関係を持つ 3 番目のテーブルを介して、予約しているイベントを購入にリンクできるように、その新しいレコードの 'id' 値を知る必要があります。

ご協力いただきありがとうございます。

4

2 に答える 2

1

最後のSQLから自動生成されたIDを取得するには、これを使用します:

    The mysqli_insert_id() function returns the ID generated by a query on a table with a

 column having the AUTO_INCREMENT attribute. If the last query wasn't an INSERT or UPDATE

 statement or if the modified table does not have a column with the AUTO_INCREMENT attribute

, this function will return zero.

$mysqli->insert_id必要なときにクエリの後に呼び出すだけです。

申し訳ありませんが、手続き型スタイルを使用しているため、次のように呼び出します

mysqli_insert_id($cxn)

于 2013-01-14T23:57:44.223 に答える
-1

この機能を使用する

function get_last_id()
{
    $q_last = mysql_query("SELECT max(id) as 'id' FROM purchases ") or die(mysql_error());
    return mysql_fetch_assoc($fetch); 
}
于 2013-01-15T00:37:57.880 に答える