【发布时间】:2014-11-26 20:21:14
【问题描述】:
两个sn-ps的PHP代码:
第一个工作正常,按顺序从不同行给出值。
while ($row = mysql_fetch_assoc($rst)) {
...
$link1 = $row['audio1'];
if ($link1) {
$link1 = $link1;
}
...
}
第二个输出第一行的值并将其应用于后续的每一行。
while ($row = mysql_fetch_assoc($rst)) {
...
if ($row['audio1']) {
$link1 = $row['audio1'];
}
...
}
即第一个代码示例在哪里生成
Audio1.mp3
Audio2.mp3
Audio3.mp3
第二个会生成
Audio1.mp3
Audio1.mp3
Audio1.mp3
问题是为什么这两个相似的实现在输出上不同。
另一个删除 ...s 的测试用例(干净的循环代码)产生了不同的画面:第一个示例仅输出一行(第一行),第二个示例的输出与重复行相同。
正在使用的 MySQL 表具有以下结构: 一张桌子, INT (id)、CHAR、SMALLINT、TINYTEXT、TEXT、TEXT、TINYTEXT (audio1)。除了最后一行(audio1)之外,所有行都被完全填充,它大部分是空的,并且在中间的某个地方有非 NULL 值(如果我们按 id 字段排序)。 在这两种情况下,将“audio1”替换为另一个列名会产生正确的结果(对于该字段)。
另一个补充是我确实最初在 mysql_query 中放置了一个 SELECT 语句来过滤掉行。根据返回的行数,第二个示例的图片可能略有不同,例如 3 个非重复值,然后重复第三个值直到结束。
【问题讨论】:
-
您发布的部分确实是等效的。因此,错误必须隐藏在
...某处... -
应该没有任何区别。第一个有点毫无意义:
if (value is non-falsey) { value = value }. -
if ($link1) {$link1 = $link1;}...什么? -
是的,对不起,看起来很奇怪,实际上不是$link=$link,那行是将单元格的内容包装到标签中,即
-
编辑您的帖子并放置完整的代码块。您发布的内容并不表明问题..
标签: php mysql loops while-loop repeat