挿入の結果を取得する方法

mysql php sql
挿入の結果を取得する方法

これはかなり基本的な質問です。現在2つのテーブルがあり、2番目のテーブルにはテーブルAの外部キー列があります。

表A:

id       Name
----------------
1        Name1
2        Name2

表B

id       Name      Parent
-------------------------
1        John      1

何が起こるのですか:

  • 私のPHPスクリプトはテーブルNameに `Name1`を挿入し、mysqlはidを挿入します。

  • 私のPHPスクリプトは、テーブル「B」に「John」を挿入し、「Parent」を設定する必要があります
    挿入されたばかりのクエリの「id」になります。

  2  0


ベストアンサー

http://php.net/manual/en/function.mysql-insert-id.php [mysql_insert_id()]を使用して、最後に挿入されたIDを取得できます。

_
mysql_insert_id —直近のクエリで生成されたIDを取得する
_

あぶない:

_
mysql_insert_id()は、ネイティブMySQL C API関数mysql_insert_id()の戻り値の型をlong型(PHPではintという名前)に変換します。 AUTO_INCREMENTカラムのカラムタイプがBIGINT(64ビット)である場合、変換により誤った値になる可能性があります。 代わりに、SQLクエリで内部MySQL SQL関数LAST_INSERT_ID()を使用してください。 PHPの最大整数値の詳細については、整数のドキュメントを参照してください。
_

例:

mysql_query("INSERT INTO ..........");
printf("Last inserted record has id %d\n", mysql_insert_id());

3


最初の挿入の後、次のことができます。

$res = mysql_query('SELECT LAST_INSERT_ID()');
$row = mysql_fetch_array($res);
$lastInsertId = $row[0];

または、http://php.net/manual/en/function.mysql-insert-id.php [mysql_insert_id]を使用できます。 ただし、マニュアルから:

_
mysql_insert_id()は、ネイティブMySQL C API関数mysql_insert_id()の戻り値の型をlong型(PHPではintという名前)に変換します。 AUTO_INCREMENTカラムのカラムタイプがBIGINT(64ビット)である場合、変換の結果、誤った値になる可能性があります。*代わりに、SQLクエリで内部MySQL SQL関数LAST_INSERT_ID()を使用します。
_

このため、列が `BIGINT`を使用する(または将来使用する可能性がある)場合、最初にリストした方法が優先されます。

3


mysql_query`で INSERT`クエリを実行した後、http://php.net/manual/function.mysql-insert-id.php [mysql_insert_id]を使用して、以前に挿入されたIDを取得できます行。

2


タイトルとURLをコピーしました