現在の位置: ホーム> 最新記事一覧> mysql_insert_idを介して挿入されたデータの自動インクリメントIDを取得するにはどうすればよいですか?

mysql_insert_idを介して挿入されたデータの自動インクリメントIDを取得するにはどうすればよいですか?

gitbox 2025-08-27
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 以下は、記事の内容とは何の関係もない序文です PHP コードの例</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"データベース操作を開始する準備ができました...\n"</span></span><span>;
</span><span><span class="hljs-variable">$servername</span></span><span> = </span><span><span class="hljs-string">"localhost"</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"root"</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$dbname</span></span><span> = </span><span><span class="hljs-string">"testdb"</span></span><span>;

</span><span><span class="hljs-comment">// 接続を作成します</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-variable">$servername</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>);

</span><span><span class="hljs-comment">// 接続を確認してください</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"接続に失敗しました: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;connect_error);
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * 記事タイトル: 合格する方法 mysql_insert_id 挿入されたデータの自己増加を取得しますID?
 *
 * 使用真ん中 MySQL データベースがデータを挿入するとき,多くの場合、挿入されたばかりのレコードの自己障害を取得する必要があります ID(AUTO_INCREMENT)。
 * 存在する PHP 真ん中,渡すことができます `mysql_insert_id()` または MySQLi、PDO 実装するために同様の方法が提供されています。
 *
 * 1. 使用 MySQLi 拡張
 *
 * 合格 MySQLi 拡張执行插入操作后,利用可能 `$conn-&gt;insert_id` 自傷行為をします ID。
 */</span>

</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"INSERT INTO users (username, email) VALUES ('Alice', '[email protected]')"</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>) === </span><span><span class="hljs-literal">TRUE</span></span><span>) {
    </span><span><span class="hljs-variable">$last_id</span></span><span> = </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;insert_id;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"新しいレコード挿入に正常に,ID のために: "</span></span><span> . </span><span><span class="hljs-variable">$last_id</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"エラーを挿入します: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;error;
}

<span class="hljs-comment">/**
 * 2. 使用 PDO 拡張
 *
 * PDO 提供された `lastInsertId()` 最後の挿入操作の自動侵入を取得する方法 ID。
 */</span>

</span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-string">"mysql:host=<span class="hljs-subst">$servername</span></span></span><span>;dbname=</span><span><span class="hljs-subst">$dbname</span></span><span>", </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>);
    </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">setAttribute</span></span><span>(PDO::</span><span><span class="hljs-variable constant_">ATTR_ERRMODE</span></span><span>, PDO::</span><span><span class="hljs-variable constant_">ERRMODE_EXCEPTION</span></span><span>);

    </span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users (username, email) VALUES (:username, :email)"</span></span><span>);
    </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>([</span><span><span class="hljs-string">':username'</span></span><span> =&gt; </span><span><span class="hljs-string">'Bob'</span></span><span>, </span><span><span class="hljs-string">':email'</span></span><span> =&gt; </span><span><span class="hljs-string">'[email protected]'</span></span><span>]);

    </span><span><span class="hljs-variable">$lastId</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">lastInsertId</span></span><span>();
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\n使用 PDO レコードを挿入します,新しいレコード ID のために: "</span></span><span> . </span><span><span class="hljs-variable">$lastId</span></span><span>;
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"間違い: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}

<span class="hljs-comment">/**
 * 3. 注意すべきこと
 *
 * - `mysql_insert_id()` 早いです MySQL 拡張真ん中的函数,もうお勧めしません,使用することをお勧めします MySQLi または PDO。
 * - 自己障害 ID テーブル用です AUTO_INCREMENT フィールドによって生成される一意の整数。
 * - 自傷行為をします ID 必须存在する同一个数据库连接真ん中进行,それ以外の場合、正しい値は取得できない場合があります。
 * - 如果插入失败または未插入自己障害字段,取得 ID 可能のために 0。
 */</span>

</span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>