Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获得;而其他的则是;获取数组的类型逻辑?_Php_Sql_While Loop_Fetch - Fatal编程技术网

Php 如何获得;而其他的则是;获取数组的类型逻辑?

Php 如何获得;而其他的则是;获取数组的类型逻辑?,php,sql,while-loop,fetch,Php,Sql,While Loop,Fetch,我有以下代码: while($m = $movieResult->fetch_array(MYSQLI_ASSOC)){ // stuff happens here } return $stuff; 它可以工作,但我真正需要的是检测while循环何时不像此示例那样运行,而是多次迭代while循环: if($m = $movieResult->fetch_array(MYSQLI_ASSOC)){ // stuff happens here re

我有以下代码:

while($m = $movieResult->fetch_array(MYSQLI_ASSOC)){
       // stuff happens here
}
return $stuff;
它可以工作,但我真正需要的是检测while循环何时不像此示例那样运行,而是多次迭代while循环:

if($m = $movieResult->fetch_array(MYSQLI_ASSOC)){
      // stuff happens here
      return $stuff;
}
else{
     return false;
}

我不确定您使用的是哪个扩展(pdo/msqli/…),但我认为您可以在开始循环之前先查看是否有任何结果

示例:

if ($movieResult->num_rows > 0){
    ... your while loop here
}else{
   return false;
}

请注意->fetch_数组获取一行结果数据。它不会获取整个结果集。这可能是您想要的,但是考虑到您已经用这段代码问了其他问题,我很确定您将得到无效的结果。这是真的,我想我只需创建一个变量集为false,然后如果while循环运行,我将它改为array,并且。=对于每个迭代..=用于字符串操作。array_push或
$arr[]=…
符号更合适。这就是我想说的:)我试图避免这种情况,因为在前面的问题中,我了解到之前检查while循环是没有意义的。“num_rows”检查的性能如何?如果它不重要,我可以使用它。性能方面?*\u num\u rows方法只返回查询中的行数。如果它是零,那么就不要运行while循环,就这么简单。我现在明白了,在我看来,要获得行数,有另一个数据库调用,现在似乎很愚蠢:)在询问之后,我意识到我可以将$stuff设置为false,并在while循环中更新它。你的方法也行,谢谢
if ($movieResult->num_rows > 0){
    ... your while loop here
}else{
   return false;
}