0

我的意思是,例如,如果我在 SQL 表上搜索某些内容,它返回 0 / 无,那是null还是的,还是会导致空的""

我正在回到 php 并尝试像这样循环遍历数据库:

伪代码:

while($row = mysqli_fetch_array($var here that has the query to the db and connection)){
      echo $row[//something pulled from table to be read back]
}

但是假设搜索查询没有返回任何结果或$row不等于任何结果,因为无论出于何种原因,在数据库中搜索的值都不存在,

那么如何检查行的空性?

如果数据库中不存在搜索到的项目,那么$rows值究竟会变成什么?空/空/或空字符串或其他什么?

根据row的值,我要测试[isset / !isset]还是[empty / !empty]?或者是唯一的方法来测试空$row做一个(伪)$x =mysqli_num_rows(var here) / if ($x == 0 ) //do something

4

4 回答 4

2

如果mysqli_fetch_array没有返回任何内容,则返回值为NULL

该行while($row = mysqli_fetch_array应该返回记录集中的一条可用记录,因此如果查询没有给出任何匹配结果,则该行echo $row['something']根本不会被执行。

如果您要获取多个字段,例如field1field2并且假设field2没有值,那么该字段的返回值就是该字段在 MySQL(或您使用的任何数据库)中的默认值。但是需要注意的一点是,它$row仍然有两个正确定义为$row['field1']$row['field2']

如果你想检查是否$row['field2']有任何值,你可以使用empty($row['field2']).

"", 0, NULL, FALSE, array()都被考虑在内empty(),因此您应该能够使用此函数安全地确定该字段是否具有任何有效值。但是,如果说 0 可能是一个有效值(例如,您正在查询 no_of_days 一个人上个月缺席并且其中一些人全勤),您将需要明确检查字段中的值并且不能依赖 empty() .

于 2012-08-30T01:43:54.557 回答
2

您可以使用 mysql_num_rows 检查是否有结果。如果该行中存在项目,则该行应该显示一个或多个或 TRUE,具体取决于您搜索的项目,如果执行查询时数据库中不存在任何内容,则 mysql_now_rows 将显示 0/NULL。

你可以这样做

$query = mysql_query("YOUR QUERY HERE");
$numrow = mysql_num_rows($query);

if ($numrow == 0)
{
ECHO "No result found.";
}
于 2012-08-30T01:45:03.150 回答
0

当什么都没有时, $row == false 这就是对 while 循环的正确测试!

于 2012-08-30T01:41:01.697 回答
0

您可以使用它mysqli_num_rows来获取查询找到的结果数。

$query = 'SELECT `blah`';
$result = mysqli_query($query);
if(mysqli_num_rows($result) > 0) {
    // do stuff here if any rows are found
} else {
    // do stuff here if NO rows are found
}
于 2012-08-30T01:43:56.057 回答