这是一个非常简单的查询,用于检查卡车是否可用(理论上)。 我不是很擅长PHP,但试图学习准备好的语句。
function truck_available($plate) {
$query = "(SELECT COUNT(`id`) FROM `trucks` WHERE `plate` = '$plate')";
$result = $db->query($query);
$result = $result->fetch();
echo $result[0];
}
这里的目标是以最简单的新手友好方式返回布尔值。 我偶然发现了这个'? true:false'我真的很喜欢这个。但是虽然我实现了它,但感觉可能会有更有效的方式。
喜欢这样..
$result = ($result[0] > 0)? true : false;
有没有办法可以直接从查询中返回一个布尔值?
我试过这个......(但是我的知识使我无法理解如何实现它,或者为什么它不起作用。)
$query = "((SELECT COUNT(`id`) FROM `trucks` WHERE `plate` = '$plate') > 1)? true : false";
有什么想法吗?感谢
答案 0 :(得分:2)
如果你真的想在查询中做这个逻辑,你可以试试这个:
SELECT TOP 1 1 FROM `trucks` WHERE `plate` = '$plate'
这可能是最有效的方法。如果找到一个条目,它将返回1,php可以看作是一个布尔值真的
答案 1 :(得分:1)
您可以稍微更改一下SQL语句,并以查询结果的形式获取true
或false
。
$query = "SELECT if( COUNT(`id`) > 0, true, false ) "
. " FROM `trucks` WHERE `plate` = '$plate'";
OR
$query = "SELECT COUNT(`id`) > 0 " // you can also avoid using if
. " FROM `trucks` WHERE `plate` = '$plate'";
但是,您需要遍历查询结果,以查找它是true
还是false
。
答案 2 :(得分:1)
试试这个,
$sth = $db->prepare("SELECT id FROM trucks WHERE plate = :plate");
$sth->bindParam(':plate',$plate, PDO::PARAM_STR);
$sth->execute();
if ($sth->rowCount() > 0)
{
//true
}
else
{
//false
}
答案 3 :(得分:0)
要将值显式转换为布尔值,请使用(bool)或(boolean)强制转换