1

所以,伙计们,我的问题是我正在从 mysql 列创建一个数组,但是,当我回显数组项时,它什么也没有返回,我有一段时间会这样,我没有看到可能的错误,希望能得到一些帮助。这是我的代码:(我知道从 mysql 到 mysqli,但我才刚刚开始尝试逻辑的东西。:))

$duracao = mysql_query(
    "SELECT SUM(fim_periodo-inicio_periodo)/0.01666667 AS mysum
 FROM afunda_eleva_$a"
); //THIS $duracao IS INSIDE A FOR LOOP THAT EXECUTES THE QUERY IF A CONDITION IS SATISFIED (DEPENDING ON $a and $prevNum), it is working fine!

while ($row2 = mysql_fetch_assoc($duracao))
{
    $duracao_afunda_eleva[] = $row2['mysum'];
}

所以,为了测试一些可能的问题,我放了:

$i2 = sizeof($duracao_afunda_eleva);    
echo $i2;
echo <br>;

它返回了数组的正确大小,问题就在这里,我认为:

for($i1 = 0 ; $i1 < sizeof($duracao_afunda_eleva); $i1++)    
{
    echo $duracao_afunda_eleva[$i1] or die("couldn't echo"
    . mysql_error());        
    echo "<br>";    
}

这对我没有任何价值。我真的很感激任何建议。提前致谢!

4

6 回答 6

0

在你的最后一个 for 循环中,你使用 $i++,它应该是 $i1++

于 2013-09-27T18:08:04.033 回答
0

尝试print_r而不是 echo - echo outputs (string)$variable,如果是数组,它只是“数组”。此外, echo 是一种语言构造而不是函数,因此您or die(...)有问题,因为语言构造没有返回值。

通常最好不要使用or die(...)构造,并正确处理问题(例如,使用定义的返回值,以便可以运行清理代码)。此外,无法使用 echo 输出任何内容将意味着您的 php/whatever 安装严重出错,此时您可能甚至无法到达代码中的那一行,即使那样它也无事可做用 mysql。

于 2013-09-27T18:02:57.960 回答
0

由于问题不在变量中,请尝试在 MySQL 选择中使用别名:

SELECT SUM(fim_periodo-inicio_periodo)/0.01666667 as mysum

然后在你的 PHP 中,你可以得到$row2['mysum'];
它可能无法解决问题,但它是一个好的开始。

于 2013-09-27T18:02:58.853 回答
0

使用此代码:

for($i1 = 0 ; $i1 < sizeof($duracao_afunda_eleva); $i1++)    
{
   echo $duracao_afunda_eleva[$i1] or die("couldn't echo". mysql_error());        
   echo "<br>";    
}

你增加$i而不是$i1

虽然,对于数组,使用foreach循环通常更容易。这从数组中的第一个元素运行到最后一个元素。

像这样:

foreach ($duracao_afunda_eleva as $value) {
    echo $value;
}

我还建议删除以下空间$row2 ['mysum']

$duracao_afunda_eleva[] = $row2['mysum'];

编辑

现在才注意到它,但是您的 fetch-statement 是错误的......它有一个错字:

while ($row2 = mysql_fetch_assoc($duracao))

确保它读取mysql而不是myqsl.

于 2013-09-27T18:04:33.790 回答
0

我个人使用:

$arr = array ( /* ... */ );
echo "<pre>";
var_dump($arr);
echo "</pre>";
于 2013-09-27T18:05:00.723 回答
0

一个快速提示是不要在循环中使用该sizeof函数。for这将在循环的每次迭代中运行,如果将其移到循环之外(或改用foreach循环),您会注意到性能有所提高。例如

$count = sizeof($duracao_afunda_eleva);
for($i = 0 ; $i < $count; $i++) {
    echo $duracao_afunda_eleva[$i] . '<br />';
}

或者

// Foreach loop example
foreach ($duracao_afunda_eleva as $key => $value) {
    echo $value . '<br />';
}

或者你也可以做的是这一行

echo implode('<br />', $duracao_afunda_eleva);
于 2013-09-27T18:06:03.773 回答