前提・実現したいこと
ショッピングサイトの各商品画像の管理を、データベースのAUTO_INCREMENTのIDを使って管理しようとしています。
そのために、商品登録をした後に、登録をしたMySQLのIDを取得したいです。
発生している問題・エラーメッセージ
lastInsertId()を実行しても、0が返ってきてしまう。
該当のソースコード
php
1 2try{ 3 $db = new PDO($dsn['db_info'],$dsn['user'],$dsn['password']); 4 //echo "接続OK"; 5 } catch(PDOException $e){ 6 //echo 'DB接続エラー!: ' . $e->getMessage(); 7 } 8 9 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES,TRUE); // there are other ways to set attributes. this is one 10 11 $post_sql = "INSERT INTO table (title, description, price) VALUES (:title, :description, :price)"; 12 $stmt = $db->prepare($post_sql); 13 14 $params = array( 15 ':title' => $_POST["title"], 16 ':description' => $_POST["description"], 17 ':price' => $price 18 ); 19 $stmt->execute($params); 20 //ここでIDを取得 21 $sql_id = $db->lastInsertId(); 22 echo $sql_id; //実行結果:0 23
試したこと
以下のコードを挿入しましたが、結果は変わりませんでした。
php
1 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES,TRUE);
もちろん、データベースはIDがついており、AUTO_INCREMENTも設定済みです。
わかる方がいれば、教えていただけると嬉しいです。
補足情報(FW/ツールのバージョンなど)
MAMP5.7
PHP7.4.2