php 嵌套while循环,嵌套while循环php

我一直试图让一系列嵌套循环工作,从一个表中选择数据库名称,然后查询该数据库中的选定表,并将结果相加并显示它们的数量和数据库名称.

我已经让代码工作,但它一直显示:

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 "
";

$counter = 0;

$result = null;

$result2 = null;

}

所有数据库连接都已建立并正常工作,因此它与此无关.任何帮助都会很棒.

解决方法:

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

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
\n", $db, $counter);

}

标签:nested-loops,php,mysql

来源: https://codeday.me/bug/20190902/1789728.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值