私はこれら 2 つのテーブル comments_tbl と news_comments_tbl を持っており、MySQL を使用しています。
コメントを作成しているときに、最後に作成されたコメント ID を新しいテーブル news_comments_tbl に送信したいと考えています。
準備済みステートメントを使用する前にこのメソッドを使用していましたが、正常に機能しました。
//comment
$name = $_POST['name'];
$comment = $_POST['comment'];
//ID
$commentidfk = $_POST['comments_id'];
$newsidfk = $_POST['news_id_fk'];
$newsidfk = $_GET['news_id_fk'];
if (isset($_POST['comment']))
{
$sqlquery ="INSERT INTO comments_tbl(comments_id, name, comment)
VALUES (NULL, '$name', '$comment')";
$result = $conn->query($sqlquery) or die('Error');
$sqlquery2 ="INSERT INTO news_comments_tbl(news_id_fk, comments_id_fk)
VALUES ('$newsidfk', LAST_INSERT_ID())";
$result2 = $conn->query($sqlquery2) or die('Error');
header("location:news.php");
}
else
{
echo 'Error';
}
しかし、今、PDO プリペアド ステートメントを使用するように変換しているときに、それを機能させることができません。コメントは作成されますが、最後に挿入された ID を新しいテーブルに挿入できません (news_comments_tbl)
これは私がやっている方法です:
$query = "INSERT INTO comments_tbl(comments_id, name, comment) VALUES (NULL,?,?)";
$stmt = $conn->prepare($query);
$stmt->bindParam(1,$name, PDO::PARAM_STR);
$stmt->bindParam(2,$comment, PDO::PARAM_STR);
$stmt->execute();
return $conn->lastInsertId('comments_id');
$query = "INSERT INTO news_comments_tbl(news_id_fk, comments_id_fk) VALUES (?, LAST_INSERT_ID)";
$stmt = $conn->prepare($query);
$stmt->bindParam(1, $newsidfk, PDO::PARAM_INT);
$stmt->execute();
header("location:news.php");