繁体   English   中英

PHP MySQLi准备的语句未将数据插入表中

[英]PHP MySQLi prepared statement not inserting data into table

我正在设计一个具有用户登录名和通过电子邮件验证进行注册的网站,当用户注册一个帐户时,它将成功正确地将用户记录插入“用户”表中的数据库。

但是,当我尝试拉出插入时创建的用户ID并将用户ID插入到该网站所有成员的花名册的第二个表中(这是针对游戏氏族的)时,它将用户名插入0 ,无论其ID在该用户的“用户”表上是什么。

这是我的代码:

if($insert_stmt = $db->prepare("INSERT INTO users (username, password, email, date, actcode) VALUES (?, ?, ?, ?, ?)"))
    {
        $insert_stmt->bind_param('sssss', $username, $password, $email, $date, $actcode);

        $stmt = $db->prepare("SELECT id FROM users WHERE email = ?");
        if($stmt)
        {
            $stmt->bind_param('s', $email);
            $stmt->execute();
            $stmt->fetch();
            $stmt->store_result();
            $stmt->bind_result($ui);
        }

        $stmt = $db->prepare("INSERT INTO roster (userid, joindate) VALUES (?, ?)");
        if($stmt)
        {
            $stmt->bind_param('ss', $ui, $date);
            $stmt->execute();
        }

        if(!$insert_stmt->execute()) {
            header('Location: error.php?err=Registration failure: INSERT');
        }
    }

出于安全原因,我保留了某些变量和代码部分,这些部分对该部分没有任何影响,这让我很头疼。

我无法弄清楚为什么它没有将来自该用户帐户的“用户”中新创建的“ id”插入“ userid”列下的“名册”表中。

另外,为了测试一些东西,我还去设置了会话变量

$_SESSION['uid'] = $ui;

行后直接

$stmt->store_result($ui);

并将其回显到我的index.php文件中,该会话变量也显示为0。

您可以简单地使用以下函数: mysqli :: $ insert_id,而不用编写第二个查询。

替换此行:

$stmt = $db->prepare("SELECT id FROM users WHERE email = ?");

带有:

$userid = $db->insert_id; 

让我知道这个是否奏效。

仍然无法使其与提供的解决方案一起使用,而是决定将所有内容合并到users表中,从而解决了该问题。 至于检查它是否正在执行,我正在进行一些检查以确保它能够通过。 感谢您的帮助和建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM