前提・実現したいこと
lastInsertIdを用いて、最新のpostIdを取得したいが、lastInsertIdの返り値が0になってしまう。
###理由
lastInsertIdを用いて、中間テーブルにデータを入れたいから
発生している問題・エラーメッセージ
// 接続チェックOK function connect() { $host = DB_HOST; $db = DB_NAME; $user = DB_USER; $pass = DB_PASS; $dsn = "mysql:host=$host;dbname=$db;charset=utf8mb4"; try { $pdo = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); return $pdo; } catch(PDOException $e) { echo "接続失敗です!". $e->getMessage(); exit(); } }
/** * リストの投稿をDBに保存 * @param string $postDate * @param string $save_path * @return bool $result */ public function createList($postDate, $save_path) { $result = false; $sql = 'INSERT INTO posts (title, text, category_id, price, img) VALUES (:title, :text, :category_id, :price, :img)'; $title = $postDate['title']; $text = $postDate['text']; $category = $postDate['category']; $price = $postDate['price']; try { $stmt = connect()->prepare($sql); $stmt->bindValue(':title', $title, PDO::PARAM_STR); $stmt->bindValue(':text', $text, PDO::PARAM_STR); $stmt->bindValue(':category_id', (int)$category, PDO::PARAM_INT); $stmt->bindValue(':price', (int)$price, PDO::PARAM_INT); $stmt->bindValue(':img', $save_path, PDO::PARAM_STR); $result = $stmt->execute(); var_dump(connect()->lastInsertId()); // return $result; } catch(\Exception $e) { return $result; } }
試したこと
idはint型AUTO_INCREMENTで主キーか?
→そう
そもそもデータは正常にINSERTできるか?
→できる
回答1件
あなたの回答
tips
プレビュー