首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >INSERT INTO INSERT INSERT LAST_INSERT_ID INSERT查询INSERT函数

INSERT INTO INSERT INSERT LAST_INSERT_ID INSERT查询INSERT函数
EN

Stack Overflow用户
提问于 2016-02-15 01:46:20
回答 2查看 216关注 0票数 3

背景:这是我第一次在这里发布问题,但我从阅读别人的问题和答案中学到了很多,我真的很感谢你们的帮助!我花了几个小时研究这个问题,但找不到一个适合我的解决方案。下面的示例来自MySQL website,到目前为止,似乎是最可靠的。

目标:最终,我希望将注册表单(目前为foo)数据库中的用户id链接到其他数据库(目前为foo2)。我想我理解了INSERT INTO和LAST_INSERT_ID,并且已经尝试了很多我在这里读过的例子。假设我的代码是正确的(可能不是),我想我的问题是关于该区域之外的语法和代码(整个函数createRows)。我需要两个$query还是只需要一个?我见过的许多示例中,除了INSERT INTO语句之外,并没有显示查询部分或代码,这就是我需要看到的。

问题:我运行这段代码,没有得到任何错误。但是,数据只进入表foo2,完全跳过/绕过表foo,表foo仍然是完全空的。

代码语言:javascript
复制
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.";
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2016-02-15 02:00:41

使用以下代码更改您的代码:

代码语言:javascript
复制
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值。在这种情况下,您的第一个查询将是:

代码语言:javascript
复制
"INSERT INTO foo (text) VALUES('$text')";

旁注:您的查询不安全。请阅读此How can I prevent SQL injection in PHP?

票数 1
EN

Stack Overflow用户

发布于 2016-02-15 01:52:38

代码语言:javascript
复制
$query = "INSERT INTO foo (id,text) VALUES(NULL,'$text')";
$query = "INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'$text')"; 

您的第二个查询将覆盖第一个查询。或者一次执行一个,或者将它们放在单独的变量中(例如blow)。

代码语言:javascript
复制
$queryOne = "INSERT INTO foo (id,text) VALUES(NULL,'$text')";
$queryTwo = "INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'$text')"; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35395011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档