我很抱歉打扰你这样一个新手问题,谢谢你抽出时间来回答它并回答它。
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语句发现了这一点。 我对此非常陌生,非常感谢您对修复它的帮助。
答案 0 :(得分:3)
如果需要,请不要引用列名称,使用反对`
INSERT INTO users (username, email, password) VALUES (:username, :email, :password)
答案 1 :(得分:0)
将quotes
更改为backticks
表格&查询中的列名
$stmt = $conn->prepare("INSERT INTO `users` (`username`, `email`, `password`) VALUES
(:username, :email, :password)");
答案 2 :(得分:0)
你在数组中传递$ pass,你的函数接受$ password 检查您的错误消息以获取具体细节,您将发现问题。
答案 3 :(得分:-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));
}
您必须为每个应用程序连接ONCE,然后一直使用该单个连接。