在if语句中测试PDO查询是否也运行它?


Does testing a PDO query in an if statement also run it?

我正在检查如何测试查询成功,并看到了这个方法:

if($db->query(...)){
    //It was successful!
} else {
    //Something went wrong
}

但是这只检查查询是否会成功运行,还是它运行查询然后返回true/false?我假设它确实运行了,但这让我想到了主要问题:

我可以用这种方式测试查询是否成功,同时将结果集存储在变量中,像这样吗?

if ($result = $db->query(...)){
//something
}

否则,我必须在if语句中运行一次相同的查询,然后将结果存储在变量中。

但是,基本上,这就是我想知道的。谢谢所有友好的帮助。:)

函数和方法在一个特定的上下文中没有不同的行为。

如果$bd->query()运行查询,如果它在if语句中,行为不会改变。

所以,是的,它运行查询

你可以试着这样测试你的查询

$result = $db->query();
if (is_null($result)) { 
    var_dump($result);
}

如果您希望在运行查询之前验证查询,那么您可以尝试像这样先准备它:

$prepare = $db->prepare($sql);
// check if SQL compiled
if($prepare)
{
    // execute the SQL
    $execute = $prepare->execute();
}