0

我在使用 mysqli 多查询时遇到了一些问题,特别是在它们退出后使用它们。如果我将'printf'行放入它将打印平均值,但我不能使用似乎使用mysqli部分之外的数组[计划使用它们来组织下面页面上的图像]。

我对 PHP 和 Mysql 还是很陌生,所以如果我错过了以前的线程中的某些内容,这些内容可能会对此进行排序/为我指明正确的方向,我深表歉意 - 但我仍在努力解决它。

如果我对此很愚蠢,请随意放火烧我并将我扔进一桶粪便中,但之前有 'printf("%s\n", $row[0,1,2,3 等]);' 它将打印结果,但如果我稍后在页面中尝试使用 row[0] ,它会使用这些字符而不是调用应该存储在那里的值。

$mysqli=new mysqli("localhost", "uname", "passwordbit", "mydb");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$query = "SELECT AVG(cpcriminalswork) from mydb;";
$query .= "SELECT AVG(cpsentancing) from mydb;";
$query .= "SELECT AVG(cpdeathpenalty) from mydb;";
$query .= "SELECT AVG(cphumanrights) from mydb;";
$query .= "SELECT AVG(cpprotection) from mydb;";
$query .= "SELECT AVG(tbtaxationspread) from mydb;";
$query .= "SELECT AVG(tbtaxmax) from mydb;";
$query .= "SELECT AVG(tbdole) from mydb;";
$query .= "SELECT AVG(tbchildben) from mydb;";
$query .= "SELECT AVG(tbunemployment) from mydb;";
$query .= "SELECT AVG(eebanks) from mydb;";
$query .= "SELECT AVG(eeminwage) from mydb;";
$query .= "SELECT AVG(eeforiegnaid) from mydb;";
$query .= "SELECT AVG(eemilitary) from mydb;";
$query .= "SELECT AVG(eemaxwage) from mydb";

/* execute multi query */
if ($mysqli->multi_query($query)) {
do {
    /* store first result set */
    if ($result = $mysqli->store_result()) {
        while ($row = $result->fetch_row()) {
        }
        $result->free();
    }
    if ($mysqli->more_results()) {
    }
} while ($mysqli->next_result());
}

/* close connection */
$mysqli->close();
4

1 回答 1

0

不需要多查询。您可以使用 SQL 收集 AVG。

(见http://www.sqlfiddle.com/#!2/529e8/3

$query = "SELECT AVG(foo1) as foo1, AVG(foo2) as foo2, AVG(foo3) as foo3, AVG(foo4) as foo4 from mydb";
$res = mysqli_fetch_array(mysqli_query($query));

print_r($res);

输出应该类似于

foo1 => 3 foo2 => 1 foo3 => 7 foo4 => 9

于 2013-04-16T10:24:11.693 回答