新手PHP MySQL问题

新手PHP MySQL问题,php,mysql,insert,Php,Mysql,Insert,嗨,我是php mysql开发新手。我正在windows上使用wamp服务器。php5.3.4,mysql5.1,apache2.2。我试图执行这段代码,但得到的只是error.php页面。如果表具有自动增量ID,是否有特殊的方法在mysql中插入?在代码中,我为id提供NULL值 请帮忙,请原谅我的问题 function addMember($firstname, $lastname, $email, $password, $bday, $gender, $maritalStatus, $ed

嗨,我是php mysql开发新手。我正在windows上使用wamp服务器。php5.3.4,mysql5.1,apache2.2。我试图执行这段代码,但得到的只是error.php页面。如果表具有自动增量ID,是否有特殊的方法在mysql中插入?在代码中,我为id提供NULL值

请帮忙,请原谅我的问题

function addMember($firstname, $lastname, $email, $password, $bday, $gender, $maritalStatus, $education, $occupation) {
    $personalQ = "INSERT INTO users_personal_profile VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
    if($stmt3 = $this->conn->prepare($personalQ)) {
        $stmt3->bind_param('sssssssss', $firstname, $lastname, $email, $password, $bday, $gender, $education, $occupation, $maritalStatus);
        $stmt3->execute();
        if($stmt3->fetch()) {
            $stmt3->close();
            header("location: intermediate.php");
        }
        else {
            $stmt3->close();
            header("location: error.php");
        }
    }
}

精简评论:

要查看发生了什么,您可以调整脚本:

function addMember($firstname, $lastname, $email, $password, $bday, $gender, $maritalStatus, $education, $occupation) {
   $personalQ = "INSERT INTO users_personal_profile VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
   if($stmt3 = $this->conn->prepare($personalQ)) {
        $stmt3->bind_param('sssssssss', $firstname, $lastname, $email, $password, $bday, $gender, $education, $occupation, $maritalStatus);

        if( $stmt3->execute() ){
            $stmt3->close();
            header("location: intermediate.php");
        }
        else {
            echo $stmt3->error;
            //    header("location: error.php"); // can't output headers after outputting something, but it's just for debugging
        }
    }
}
这将使您了解是否存在实际错误以及错误的含义

应在db方案中设置自动增量字段。您的表是如何定义的?第一个字段是否实际标记为自动增量?(如果为空,则应为null。) 您还可以直接在数据库中执行查询,并查看它是如何执行的。(您可以从控制台使用phpmyadmin、navicat或sql来实现这一点。)


如果需要代码中的自动增量值,可以使用
$mysqli\u stmt->insert\u id

使用
mysql\u error()
并检查错误消息。。看起来我们使用某种框架通常是用于选择查询,您有一个索引查询。只使用在上下文中有意义的函数。最好检查
execute
返回的内容。在
INSERT
fetch
应该返回什么?我认为MySQL不支持从
INSERT
返回
,所以当您测试
if($stmt3->fetch())
时,它总是计算为false?(正如哈克雷所说)感谢各位的迅速反应。。甚至在此之前,$stmt3->execute();语句本身不执行。我看不到数据库中没有存储任何值。。有什么问题吗?当我在表上运行select语句时,它会给出正确的结果。就是这样,它工作了!删除fetch语句完全有效!非常感谢印加。。你是我的救世主。。