1

私はphpを使用してアイテムを挿入するデータベースを持っています。自動インクリメント列の ID を取得したいのですが、マニュアルを読んだところ、mysql_query はブール値ではなくリソース変数を返すと書かれています。そのリソースからデータを取得する方法はありますか?

echo $query_ins = "INSERT INTO `house` VALUES ('' , '$city', '$street', 'num');
$res = mysql_query($query_ins);

最初のフィールドは、私が興味を持っている ID フィールドです
。mysql_fetch_assoc と mysql_result 関数を試して、$res を配列に変換するか、SELECT クエリで行うように直接データを取得しましたが、成功しませんでした。助言がありますか?

4

1 に答える 1

1

マニュアルを参照してください: mysql_insert_id — 最後のクエリで生成された ID を取得します

これは、StackOverflow に投稿しなくても、自分で簡単に見つけられるはずだったものです。使用している API のドキュメントを確認することをお勧めします。


あなたのコメントについて:

SELECT * FROM house WHERE id = LAST_INSERT_ID()

これは、自動インクリメントの主キーがあることを前提としています。

RAND() や UUID() などを使用して、挿入時に非決定論的な主キー値を生成すると、生成された値を取得する方法が事実上ありません。INSERT を実行する前に値を生成する必要があるため、行の検索に使用できるリテラル値が得られます。

SET @r := RAND();
INSERT INTO house (id, ...) VALUES (@r, ...);
SELECT * FROM house WHERE id = @r;

MD5 は決定論的であるため、ハッシュする元のキー文字列があると仮定すると、その MD5 式と元の文字列を使用して行を取得できるはずです。

INSERT INTO house (id, ...) VALUES (MD5('xyzzy'), ...);
SELECT * FROM house WHERE id = MD5('xyzzy'); 
于 2013-05-11T19:00:41.373 に答える