PDO SQL我正在尝试设置我的SQL查询以检查多个列,但它不起作用

时间:2018-01-06 04:40:00

标签: php mysql sql pdo

我已经构建了一个登录系统,我使用他们的用户名或电子邮件地址检查用户是否存在。

这是我的代码:

$q = $dbcon->prepare("SELECT * FROM table WHERE username=:e)");

但它不起作用。如果我将查询更改为:

,它将完美运行
$q = $dbcon->prepare("SELECT * FROM table WHERE email=:e)");

$q = $dbcon->prepare("SET @user = :user SELECT * FROM table WHERE (username=@user OR email=@user)");

之前我已经使用过这段代码而且它一直都很完美,所以我不确定为什么它这次不起作用。

我得到的实际错误是我的代码中的验证错误。我使用rowCount()函数检查用户是否存在;使用所需的查询,rowCount()返回0。

我也尝试过:

sample0
sample1
sample11
sample12
sample13
sample14
sample2
sample21
sample3

我在谷歌上发现的另一篇文章中提到了这一点,但这也没有用。

有人有任何建议吗?

提前致谢。

2 个答案:

答案 0 :(得分:3)

根据PDO::Prepare

  

您必须为您希望的每个值包含唯一的参数标记   调用PDOStatement :: execute()时传入语句。您   不能多次使用同名的命名参数标记   准备好的声明,除非启用仿真模式。

所以试试 -

$q = $dbcon->prepare("SELECT * FROM table WHERE (username=:e1 OR email=:e2)");
$q->execute(array(':e1'=>$user,':e2'=>$user));

答案 1 :(得分:-1)

除了圆括号外,我看起来没问题。试试......

$q = $dbcon->prepare("SELECT * FROM table WHERE username=:e OR email=:e");