我是PHP和MySQL的新手,我正在尝试将数据插入到数据库中,该数据库工作正常,直到我尝试使用PDO的prepare方法。它返回catch错误,我无法弄清楚为什么 - 我还想知道使用未命名的占位符或命名占位符是否是最佳做法?
用户名和密码变量在我的代码中先前定义,并使用$_POST
从用户捕获数据。
编辑:getMessage()错误显示SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'username' cannot be null
if (!empty($user) && (!empty($password)) ) {
try {
$results = $db->prepare("INSERT INTO user_info (username, pass) VALUES (?,?)");
$results->bindParam(1,$username);
$results->bindParam(2,$password);
$results->execute();
} catch (Exception $e) {
echo "Could not insert data in to the database";
}
}
答案 0 :(得分:0)
您有两个不同的变量名称。您正在检查$user
以确保它不是empty()
,但是您告诉绑定$username
第一个参数。您只需要重命名其中一个以匹配另一个。
答案 1 :(得分:0)
试试这个。
if (!empty($user) && (!empty($password)) ) {
try {
$results = $db->prepare("INSERT INTO user_info (username, pass) VALUES (?,?)");
$results->bindParam(1,$user);
$results->bindParam(2,$password);
$results->execute();
} catch (Exception $e) {
echo "Could not insert data in to the database";
}
}
请先尝试自己找错误。