我有2个表,我正在尝试同时将数据保存到两个表中。表“lyricsAuthor”包含PK(id),表“test”包含FK(testid)。 它现在保存到两个表,但“testid”保存0,而不是“lyricsAuthor”中的最后一个“id”。
我看不出我错过了什么? 我目前的代码是这样的:
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$testid = "SELECT id FROM lyricsAuthor ORDER BY id DESC LIMIT 1";
$sql = "INSERT INTO test (testid,testname) values(?, 'John Doe')";
$q = $pdo->prepare($sql);
$q->execute(array($testid));
Database::disconnect();
header("Location: lyrics.php");
答案 0 :(得分:1)
使用mysql_insert_id
代替SELECT id...
获取当前脚本上下文中最近插入的行的ID,否则如果多个访问者同时加载您的网页,则会出现并发问题(数据库中的细微延迟将导致ID不匹配。
在PDO中,该方法在MySQLi $link->lastInsertId();
$link->insert_id;