【发布时间】:2019-10-29 03:31:11
【问题描述】:
此代码是注册代码的一部分。但它总是返回“昵称已经存在”。我不明白为什么。
if (isset($_POST['create'])) {
$nickname = $_POST['nickname'];
$email = $_POST['email'];
$password = $_POST['password'];
$slt1 = "SELECT nickname FROM users WHERE nickname='$nickname'";
$slt2 = "SELECT email FROM users WHERE email='$email'";
$stmt1 = $db->prepare($slt1);
$stmt2 = $db->prepare($slt2);
if($stmt1->execute([$nickname])) {
echo 'Nickname already exist';
} elseif ($stmt2->execute([$email])) {
echo 'email already exist';
} else {
//more code here
}
}
【问题讨论】:
-
第一个
if返回true仅仅表示查询执行成功。它没有说明查询背后的业务逻辑。要检查这一点,您必须查看结果集。 -
另外,你使用prepare语句完全错误,你假设使用占位符绑定变量。请阅读 PHP 手册examples 了解如何使用 PDO 准备语句。
标签: php if-statement pdo