所以,大家好,我的问题是我正在从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>";
}
这使我没有任何价值。我真的很感激任何建议。提前谢谢!
答案 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 ++