背景:这是我第一次在这里发布问题,但我从阅读别人的问题和答案中学到了很多,我真的很感谢你们的帮助!我花了几个小时研究这个问题,但找不到一个适合我的解决方案。下面的示例来自MySQL website,到目前为止,似乎是最可靠的。
目标:最终,我希望将注册表单(目前为foo)数据库中的用户id链接到其他数据库(目前为foo2)。我想我理解了INSERT INTO和LAST_INSERT_ID,并且已经尝试了很多我在这里读过的例子。假设我的代码是正确的(可能不是),我想我的问题是关于该区域之外的语法和代码(整个函数createRows)。我需要两个$query还是只需要一个?我见过的许多示例中,除了INSERT INTO语句之外,并没有显示查询部分或代码,这就是我需要看到的。
问题:我运行这段代码,没有得到任何错误。但是,数据只进入表foo2,完全跳过/绕过表foo,表foo仍然是完全空的。
function createRows(){
if (isset($_POST['submit'])) {
global $connection;
$text = $_POST['text'];
$query = "INSERT INTO foo (id,text) VALUES(NULL,'$text')";
$query = "INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'$text')";
$result = mysqli_query($connection, $query);
if (!$result) {
die('Query FAILED' . mysqli_error($connection));
} else {
echo "Success! New record created.";
}
}
}发布于 2016-02-15 02:00:41
使用以下代码更改您的代码:
function createRows(){
if (isset($_POST['submit'])) {
global $connection;
$text = $_POST['text'];
$query = "INSERT INTO foo (id,text) VALUES(NULL,'$text')";
$result = mysqli_query($connection, $query);
if (!$result) {
die('Query FAILED' . mysqli_error($connection));
} else {
$last = mysqli_insert_id($connection);
$query1 = "INSERT INTO foo2 (id,text) VALUES($last,'$text')";
mysqli_query($connection, $query1);
echo "Success! New record created.";
}
}
}还有,我对你的第一个query.Why感到困惑,你是不是在你的id字段中插入了null值?如果你的id是主键,那么它就不应该是null.Also,如果你已经给它分配了自动增量,那么你就不需要在里面插入null值。在这种情况下,您的第一个查询将是:
"INSERT INTO foo (text) VALUES('$text')";旁注:您的查询不安全。请阅读此How can I prevent SQL injection in PHP?。
发布于 2016-02-15 01:52:38
$query = "INSERT INTO foo (id,text) VALUES(NULL,'$text')";
$query = "INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'$text')"; 您的第二个查询将覆盖第一个查询。或者一次执行一个,或者将它们放在单独的变量中(例如blow)。
$queryOne = "INSERT INTO foo (id,text) VALUES(NULL,'$text')";
$queryTwo = "INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'$text')"; https://stackoverflow.com/questions/35395011
复制相似问题