PHP PDO/MySQL查询工作不正常

PHP PDO/MySQL查询工作不正常,mysql,Mysql,所以我有一个网站,人们可以在那里报告一些曲目。人们可以这样做,即使他们不是上述网站的成员,如果他们不是成员,系统将以“not_a_member_XXXX”的方式为他们分配一个随机的“伪成员编号”(pmn) 在测试期间,我们有一些歌曲被同一个人用一个伪号码和一些成员号码报告。我的问题是,如果我使用pmn进行查询,并且歌曲具有相同的成员名称和电子邮件,但具有另一个成员编号,则代码将插入该歌曲,而不是以“You have clairs this song”的样式显示消息 但是,如果我使用成员编号进行查

所以我有一个网站,人们可以在那里报告一些曲目。人们可以这样做,即使他们不是上述网站的成员,如果他们不是成员,系统将以“not_a_member_XXXX”的方式为他们分配一个随机的“伪成员编号”(pmn)

在测试期间,我们有一些歌曲被同一个人用一个伪号码和一些成员号码报告。我的问题是,如果我使用pmn进行查询,并且歌曲具有相同的成员名称和电子邮件,但具有另一个成员编号,则代码将插入该歌曲,而不是以“You have clairs this song”的样式显示消息

但是,如果我使用成员编号进行查询,则即使记录已向pmn报告,它也会显示上述消息

我认为我的逻辑有问题,但在phpMyAdmin上运行上述查询时,如果有匹配项,它会显示记录。我读过关于优先级的书,如果它在这里适用,如果有一些运算符顺序我应该知道。我做错了什么

提前谢谢,我希望我能让别人明白我的意思(英语不是我的第一语言或第二语言)

编辑以添加一些信息:虽然我还不能确定这个问题的特定模式,但我已经确定它发生在这个特定记录中。

您的数字是否存储为字符串?如果没有,则应使用
PDO::PARAM_INT
绑定数值参数。除非启用了异常抛出功能,
prepare
bindParam
以及
execute
将在出现错误时返回
false
。您可能应该检查一下,然后分别查看
$con->errorInfo()
$stmt->errorInfo()
。@GeraldSchneider:这些数字是字符串,因为它们可以包含字母和“-”和“.”。@Jakumi:谢谢,我会研究的。我没有例外。我刚刚用我刚刚注意到的东西编辑了OP。如果启用了异常抛出,它将抛出异常。没有它,您必须检查返回值。我想你提供的记录看起来没有可疑。你的数字是以字符串形式存储的吗?如果没有,则应使用
PDO::PARAM_INT
绑定数值参数。除非启用了异常抛出功能,
prepare
bindParam
以及
execute
将在出现错误时返回
false
。您可能应该检查一下,然后分别查看
$con->errorInfo()
$stmt->errorInfo()
。@GeraldSchneider:这些数字是字符串,因为它们可以包含字母和“-”和“.”。@Jakumi:谢谢,我会研究的。我没有例外。我刚刚用我刚刚注意到的东西编辑了OP。如果启用了异常抛出,它将抛出异常。没有它,您必须检查返回值。我认为你提供的记录看起来没有可疑。
$query_claimed = "SELECT * FROM claims_archive WHERE t20pctID=:t20pctID AND member_name=:member_name AND member_email=:member_email AND (member_number=:member_number OR member_number LIKE '%not_a_member_%')"; 
$stmt = $con->prepare($query_claimed);
$stmt->bindParam(':t20pctID', $t20pctID);
$stmt->bindParam(':member_name', $member_name);
$stmt->bindParam(':member_number', $member_number);
$stmt->bindParam(':member_email', $member_email);
$stmt->execute();