为什么mysql in lamp stack on google cloud vm instance return 查询结果错误?

Why does mysql in lamp stack on google cloud vm instance return wrong query results?

在我的常规主机上此查询 return 正确结果:

$auth_check = $db->raw()
       ->bind( ":username", "email@gmail.com" )
       ->exec( "SELECT * FROM users WHERE userType = 'ADMIN' || userType = 'JUNIOR ADMIN' 
AND username = :username " )->fetch();

但是当我在 google 云平台计算 VM 上使用相同的代码时,它给出了奇怪的结果:

用户名 |用户类型 |名称 |出生日期

alainatianastewart@gmail.com |管理员 |狮子座管理员 | 1907-01-01

发生这种情况有什么原因吗?我在 gcp 上使用 LAMP 堆栈和一个简单的网站。

我在这里猜测 x OR y AND z 可以解释为 x OR (y AND z),这意味着“管理员,或者具有此用户名的初级管理员”,这不是您想要的。您在第一个条件下获得匹配,忽略其余条件。

这可以通过分组来解决,比如(x OR y) AND z,但你真正需要的是:

WHERE username=:username AND userType IN ('ADMIN', 'JUNIOR ADMIN')