php - INSERT INTO & LAST_INSERT_ID inside Query inside 函数

标签 php function mysqli insert-into last-insert-id

背景:这是我第一次在这里发布问题,但我从阅读他人的问题和答案中学到了很多东西,非常感谢您的所有帮助!我花了几个小时研究这个问题,但找不到适合我的解决方案。下面的示例来自 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/

相关文章:

javascript - 在函数内创建全局变量 - 为什么这样做有效?

javascript - 函数未在 Controller 内部定义,AngularJS

php - SQLi 保护用户输入文本

php - PDO mysql : How to know if insert was successful

php - 从过滤掉任何重复对的数组中查找值的唯一组合

python - 使用列表推导调用函数列表

php - 我怎样才能在 PHP 中为整个项目建立一个 MySQL 连接

php - 如何在mysql中仅通过一次更改添加重复记录而其他字段为零

php - 如何从打开的连接确定 SQLite 文件名?

php - 在弹出窗口中打开新链接失败,出现意外的 T_STRING