回显PHP数组不返回结果

时间:2013-09-27 17:58:37

标签: php mysql arrays echo

所以,大家好,我的问题是我正在从mysql列创建一个数组,但是,当我回显数组项时,它什么也没有给我回报,我对此有一段时间了,我没有看到一个可能的错误,希望可以得到一些帮助。这是我的代码:(我知道mysqli的mysql,但我只是开始尝试逻辑的东西。:))

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

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

6 个答案:

答案 0 :(得分:0)

尝试print_r而不是echo - echo输出(字符串)$ variable,如果数组只是“数组”。此外,echo是一种语言结构而不是函数,因此您的or die(...)存在问题,因为语言结构没有返回值。

通常最好不使用or die(...)构造,并正确处理问题(使用定义的返回值,因此可以运行清理代码)。此外,无法使用echo输出任何内容将意味着您的php /任何安装都严重变坏,此时您可能甚至无法在代码中找到该行,即使这样也无法做任何事情用mysql。

答案 1 :(得分:0)

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

SELECT SUM(fim_periodo-inicio_periodo)/0.01666667 as mysum

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

答案 2 :(得分: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

答案 3 :(得分:0)

我个人使用:

$arr = array ( /* ... */ );
echo "<pre>";
var_dump($arr);
echo "</pre>";

答案 4 :(得分:0)

快速提示不要在sizeof循环中使用for函数。这将在循环的每次迭代中运行,如果将其移出循环(或使用foreach循环),您会注意到性能的提高。 e.g。

$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);

答案 5 :(得分:0)

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