Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 嵌套While循环_Php_Mysql_Nested Loops - Fatal编程技术网

Php 嵌套While循环

Php 嵌套While循环,php,mysql,nested-loops,Php,Mysql,Nested Loops,我一直在尝试使用一系列嵌套循环从一个表中选择数据库名称,然后在该数据库中查询所选表,并将结果相加,显示它们的数量和数据库名称 我已使代码正常工作,但它一直显示: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in 我已经尝试了我在网上找到的所有可能的方法来提供帮助,但都没有成功 $resulta = mysql_query("SELECT dbname AF012 FROM Cust

我一直在尝试使用一系列嵌套循环从一个表中选择数据库名称,然后在该数据库中查询所选表,并将结果相加,显示它们的数量和数据库名称

我已使代码正常工作,但它一直显示:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
我已经尝试了我在网上找到的所有可能的方法来提供帮助,但都没有成功

$resulta = mysql_query("SELECT dbname AF012 FROM Customer");

while($data = mysql_fetch_array($resulta))
  {
    $db = $data[' dbname '];

$result = null;
$result2 = mysql_query("SELECT changemade FROM $db.orders");
//looping through the results
while($row = mysql_fetch_array($result2))
  {
    //checking if any record is 1,2 or 3
  if( ($row[‘changemade’]== 1) || ($row[‘changemade’]== 2) || ($row[‘changemade’]== 3) )          {
      //if any match the if adding 1 to the counter
      $counter ++;
    }
     }
 unset($result2);
echo $db."  ".$counter;
 echo "<br>";
 $counter = 0;
 $result = null;
 $result2 = null;
}
$resulta=mysql\u查询(“从客户中选择dbname AF012”);
而($data=mysql\u fetch\u数组($resulta))
{
$db=$data['dbname'];
$result=null;
$result2=mysql_查询(“从$db.orders中选择changemake”);
//循环浏览结果
while($row=mysql\u fetch\u数组($result2))
{
//检查是否有任何记录为1、2或3
如果($row['ChangeMaked']==1)| |($row['ChangeMaked']==2)| |($row['ChangeMaked']==3)){
//如果有匹配,则在计数器中添加1
$counter++;
}
}
未结算($结果2);
echo$db.“.”$counter;
回声“
”; $counter=0; $result=null; $result2=null; }

所有的数据库连接都已建立且工作正常,因此与此无关。任何帮助都会很好。

这是因为
mysql\u query
在查询失败时返回false,因此您的一个查询失败,
mysql\u fetch\u array()
得到一个布尔值。尝试更改
$db=$data['dbname']
$db=$data['dbname']

您需要引入错误处理,还可以简化代码。当前的故障点是查询数据库并从中获取数据,因此您可以将其封装到它自己的函数中,这也将减少您的代码:

function mysql_query_array($query)
{
    if (!$result = mysql_query($query)) {
        throw new Exception(sprintf('Invalid query "%s", error: %s.', $query, mysql_error()));
    }
    return function () use ($result) {
        return mysql_fetch_array($result);
    };
}
有了这个小助手函数,您的代码现在更加紧凑,并且具有实际的错误处理能力:

$queryA = mysql_query_array("SELECT dbname AF012 FROM Customer");
while ($data = $queryA())
{
    $counter = 0;
    $queryB = mysql_query_array("SELECT changemade FROM {$data['dbname']}.orders");
    while ($row = $queryB())
    {
        if (in_array($row['changemade'], range(1, 3))) {
            $counter++;
        }
    }
    printf("%s  %s<br>\n", $db, $counter);
}
$queryA=mysql\u query\u数组(“从客户处选择dbname AF012”);
而($data=$queryA())
{
$counter=0;
$queryB=mysql\u query\u数组(“从{$data['dbname']}.orders中选择changemake”);
而($row=$queryB())
{
if(在数组中($row['changemake'],范围(1,3))){
$counter++;
}
}
printf(“%s%s
\n”,$db,$counter); }
您有一堆卷曲的撇号,而不是真正的单引号
$row['changemake']==1)
应该是
$row['changemake']==1)
我需要查看客户表的架构。