2016-11-17 35 views
1

无效参数号我得到这个错误:SELECT语句给人致命错误:

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number in

这是我的代码(这不起作用):

"SELECT id, username, email, password FROM users WHERE (username = :usernameOrEmail OR email = :usernameOrEmail) AND password = :password" 

,但如果我删除的OR,那么它的作品!

"SELECT id, username, email, password FROM users WHERE username = :usernameOrEmail AND password = :password" 
+1

第一个查询看起来也不错。但尝试一次'“选择id,用户名,电子邮件,密码从用户WHERE密码=:密码和(用户名=:usernameOrEmail或电子邮件=:usernameOrEmail)”'让我们知道工作与否。当你将值分配给':usernameOrEmail'和':password'时,你可能会在下一行出现错误。 –

+0

您可能必须将':usernameOrEmail'绑定两次。仅仅因为你使用相同的参数并不意味着你不需要3个绑定。 –

+0

使用准备? –

回答

-2

与下面的查询

SELECT 
    id, username, email, password 
FROM 
    users 
WHERE 
    :usernameOrEmail 
    IN (username,email) 
    AND password = :password 

尝试正如你不能在查询中使用命名参数标记1倍以上。

-1

这是PHP版本的BUG
您尝试更新的PHP版本