0

很抱歉用这样一个新手问题打扰您,感谢您抽出宝贵时间仔细阅读并回答。

function dbaddusr($username, $email, $password){
        try{
            $conn = new PDO(CONNECTDATA);
            $stmt = $conn->prepare("INSERT INTO 'users' ('username', 'email', 'password') VALUES (:username, :email, :password)");
            $pass = crypt($password);
            $result = $stmt->execute(array("username" => $username, "email" => $email, "password" => $pass));
        } catch(PDOException $e) {
            echo 'ERROR: ' . $e->getMessage();
            return false;
        }
    }

问题是,$result 总是错误的。(我通过 try 块中的一些简单的 var_dump 语句发现了这一点。我对此很陌生,非常感谢您对修复它的帮助。

4

4 回答 4

3

不要引用列名,如果需要,请使用反引号`

INSERT INTO users (username, email, password) VALUES (:username, :email, :password)
于 2013-05-17T12:21:01.493 回答
0

更改quotesbackticks查询中的表和列名,

 $stmt = $conn->prepare("INSERT INTO `users` (`username`, `email`, `password`) VALUES      
        (:username, :email, :password)");
于 2013-05-17T12:21:35.343 回答
0

您在数组中传递 $pass 并且您的函数接受 $password 检查您的错误消息以获取特定详细信息,您会发现问题。

于 2013-05-17T12:22:47.777 回答
-1

清理了所有无用和错误代码的非臃肿版本。

function dbaddusr($username, $email, $password){
    global $conn;
    $sql  = "INSERT INTO users (username, email, password) VALUES (?,?,?)";
    $stmt = $conn->prepare($sql);
    $pass = crypt($password);
    $stmt->execute(array($username, $email, $pass));
}

您必须为每个应用程序连接一次,然后一直使用该单一连接。

于 2013-05-17T12:25:36.937 回答