这个问题在这里已经有答案了:
php pdoexception:“sqlstate[hy093]:无效参数号”(4个答案)
两年前关门了。
我已经建立了一个登录系统,在这里我使用用户名或电子邮件地址检查用户是否存在。
这是我的密码:
// DB Connection Included
$q = $dbcon->prepare("SELECT * FROM table WHERE (username=:e OR email=:e)");
$q->execute(array('e'=>$user));
但它不起作用。如果我将查询更改为:
$q = $dbcon->prepare("SELECT * FROM table WHERE username=:e)");
或
$q = $dbcon->prepare("SELECT * FROM table WHERE email=:e)");
我以前用过这段代码,它一直都很好地工作,所以我不知道为什么这次不工作。
我得到的实际错误是代码中的验证错误。我使用rowcount()函数检查用户是否存在;使用所需的查询,rowcount()返回0。
我也尝试过:
$q = $dbcon->prepare("SET @user = :user SELECT * FROM table WHERE (username=@user OR email=@user)");
这是我在谷歌上找到的另一篇文章中提出的,但这也不起作用。
有人有什么建议吗?
提前谢谢。
2条答案
按热度按时间5t7ly7z51#
我看没问题,除了括号。尝试。。。
bvn4nwqk2#
根据
PDO::Prepare
在调用pdostatement::execute()时,必须为要传入语句的每个值包含一个唯一的参数标记。除非启用了仿真模式,否则不能在准备好的语句中多次使用同名的命名参数标记。所以试试看-