我有条件,如果你在表格中找到确切的网址,将返回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
答案 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
。
如果您想知道是否有任何数据被返回,请在结果上致电fetch
或fetchAll
。
答案 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;
}