我在一些我必须处理的旧PHP代码中遇到了以下内容。我的问题是,是否需要那些Ifs?换句话说,如果返回结果,它必须返回大于零的记录,对吧?相反 - 意思是如果$ result是False,我可以假设没有找到记录吗?
$sql = "SELECT * FROM houses WHERE ownerphone=$pn";
$result = $conn->query($sql);
if ($result) {
$count = $result->num_rows;
if ($count > 0){
....Stuff happens here...
} else {
...What happens here?...
}
} else {
...Other Stuff happens here
}
答案 0 :(得分:2)
是的,两者都是必需的。
如果返回结果,它必须返回大于零的记录,对吗?
错误。
如果你没有得到结果,那么你得到一个错误,你将没有一个对象来读取结果的数量。
你可以从成功的请求中获得零行。
如果$ result为False,我可以假设没有找到记录吗?
嗯,是的。有点。这就是if
语句停止检查结果是否为False时是否存在多行的原因。
...但是没有返回行,因为有一个错误与不返回行有所不同,因为找不到行。
答案 1 :(得分:1)
不,你不能假设这一点。如果尝试执行查询时出现错误,则$conn->query()
会返回false
。与任何行匹配的SELECT
查询不是错误。
错误包括查询中的语法不正确或与数据库服务器通信时出现问题。
答案 2 :(得分:1)
来自docs;
失败时返回FALSE。成功的SELECT,SHOW,DESCRIBE或 EXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于 其他成功的查询mysqli_query()将返回TRUE。
这意味着它将基本上永远不会返回null
。第一次检查(if ( $result )
只是为了确保一切顺利,你从数据库得到某种响应。第二项是计算你的行;得到一个结果并不意味着你的查询实际上返回数据,因为也许你正在寻找那些不存在的东西。