我的代码返回错误的值

时间:2014-04-24 23:52:22

标签: php mysql

在我的PHP代码中,我运行以下语句:

$stmt = $pdo->prepare("SELECT * FROM `tb_services` WHERE tb_services.user_id = :var1 AND
(tb_services.user_id = :var1 OR tb_services.user_id = (SELECT subuser_owner_id FROM tb_users WHERE user_id = :var1))
AND tc_services.sub_id = :var2");
$stmt->bindParam(":var1", $_GET['var1']);
$stmt->bindParam(":var2", $_GET['var2']);

然而,当$stmt->rowCount()返回0时,但是当我运行这个确切的语句(填充了我输入的相同值而不是:var1, :var2)时,它会完美地找到该行。

while($info = $stmt->fetch(PDO::FETCH_ASSOC)) {

以上是未运行的代码。由于rowCount()的返回是0并且while循环没有运行,这只是向我显示它由于某种原因没有找到该行。如果我将静态值输入到SQL语句中,它就可以完美地运行。

1 个答案:

答案 0 :(得分:0)

我发现了错误。我忽略了我的代码,看到了我犯的愚蠢错误。对于可能遇到类似问题的任何人,可以使用以下MySQL语句:

$stmt = $pdo->prepare("SELECT * FROM `tb_services` WHERE tb_services.user_id = :var1 AND
(tb_services.user_id = :var1 OR tb_services.user_id = (SELECT subuser_owner_id FROM     tb_users WHERE user_id = :var1))
AND tc_services.sub_id = :var2");

应该是

$stmt = $pdo->prepare("SELECT * FROM `tb_services` WHERE(tb_services.user_id = :var1 OR     tb_services.user_id = (SELECT subuser_owner_id FROM     tb_users WHERE user_id = :var1))
AND tc_services.sub_id = :var2");
  • 删除导致错误的第一个tb_services.user_id = :var1