在我的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语句中,它就可以完美地运行。
答案 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
。