如何检查EXISTS结果 - PDO

时间:2016-02-03 13:09:29

标签: php mysql pdo

我使用http://php.net/页面代码与PDO进行协调。我添加了EXIST术语。如何检查EXISTS是否返回false?如果不可行,如何检查select是否返回空结果?

try {
    $conn = new PDO("mysql:host=$servername;dbname=xxxx", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";
            getUsers($conn,$po[0]);
            $conn = null;
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }

function getUsers($con,$po){

    $sql = "SELECT * FROM usuarios WHERE EXISTS (SELECT id FROM webs WHERE name='$po')";

     foreach ($con->query($sql) as $row) {

         print $row['nombre'] . "\n";
         print $row['id'] . "\n";
         print $row['email'] . "\n";
     }

}

2 个答案:

答案 0 :(得分:0)

如果您将使用这样,那么它将起作用,并且不需要检查条件

$rows = $con->query($sql);
if($rows){
   foreach ($rows as $row) {
         print $row['nombre'] . "\n";
         print $row['id'] . "\n";
         print $row['email'] . "\n";
   }
}

答案 1 :(得分:0)

WHERE EXISTS根据键SELECT

之后的子查询返回标准EXISTS结果(行)

因此,要检查EXISTS是否失败,您必须使用rowCount,它返回查询返回的行数:

$result = $con->query($sql);
if( $result->rowCount() > 0 ) echo "EXISTS";
else                          echo "NOT EXISTS";

(编辑:)

请注意:

正如下面的评论中所指出的,rowCount()在这种情况下工作正常,并且始终使用mySQL数据库结构,但是«不保证所有数据库结构的这种行为:使用sqLite,即它不是的工作原理。