- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
背景:这是我第一次在这里发布问题,但我从阅读他人的问题和答案中学到了很多东西,非常感谢您的所有帮助!我花了几个小时研究这个问题,但找不到适合我的解决方案。下面的示例来自 MySQL website到目前为止,似乎是最可靠的。
目标:最终,我想将注册表单(目前为 foo)数据库中的用户 ID 链接到其他数据库(目前为 foo2)。我想我了解 INSERT INTO 和 LAST_INSERT_ID 并尝试了我在这里阅读的许多示例。假设我的代码是正确的(它可能不正确),我认为我的问题是关于该区域之外的语法和代码(整个函数 createRows)。我需要两个 $query 还是只需要一个?我见过的许多示例都没有显示查询部分或代码,只显示 INSERT INTO 语句,而这正是我需要看到的。
问题:我运行这段代码,但没有收到任何错误。然而,数据只进入表 foo2,完全跳过/绕过表 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.";
}
}
}
最佳答案
用这个改变你的代码:
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.";
}
}
}
此外,我对您的第一个查询感到困惑。为什么要在 id
字段中插入 null
值?如果您的 id
是主键,那么它不应该为 null。此外,如果您为其分配了自动增量,那么您不需要在其中插入 null
值。在这种情况下,您的第一个查询将是:
"INSERT INTO foo (text) VALUES('$text')";
Side note : Your query is unsafe. Read this How can I prevent SQL injection in PHP?.
关于php - INSERT INTO & LAST_INSERT_ID inside Query inside 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395011/
我是一名优秀的程序员,十分优秀!