pdo-> execute()导致空值

时间:2014-01-08 17:29:02

标签: php if-statement pdo

我有条件,如果你在表格中找到确切的网址,将返回true,但如果你不认为会返回false。

但是当我运行sql并且它返回空时,条件就好像我找到了这个条件,我会给出一个例子。

$sql = "SELECT url FROM table WHERE url = '$link'";
$prepare = $conn->prepare($sql);
if ( $prepare->execute() ) {
return true;
} else {
return false; }

我甚至想要它返回空时,他会给出else的结果。

如果execute返回empty,则表示感觉为true,但为false

3 个答案:

答案 0 :(得分:1)

  

我甚至想要它返回空时,他会给出else的结果。

嗯,那不是执行的。如果查询失败,它只返回false。能够执行但返回0行的查询不是失败。

http://us3.php.net/manual/en/pdostatement.execute.php

您需要先计算语句首先选择的行:http://us3.php.net/manual/en/pdostatement.rowcount.php

转到示例#2计算SELECT语句返回的行

答案 1 :(得分:0)

execute()的返回值表示查询是成功还是失败。如果出现某种错误(网络问题,权限错误),查询将失败。如果查询根本找不到任何匹配数据,那不是错误,这是正常行为,execute会返回true

如果您想知道是否有任何数据被返回,请在结果上致电fetchfetchAll

答案 2 :(得分:0)

您应该在PDO中使用bind。

如果没有找到数据或查询未执行,它将return false。您可以尝试:

    $sql = "SELECT url FROM table WHERE url = :link";
    $prepare = $conn->prepare($sql);
    prepare->bindParam(':link', $link, PDO::PARAM_STR, 12);
    if ( $prepare->execute() ) {
     if($prepare->rowCount()){
       echo "got data";
        return true;
     }
     else{
       echo "no data";
       return false;
      }

    } else {
    return false;
   }