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、TINYTEXT、TINYTEXT (audio1)。所有的行都被完全填充,除了最后一个(audio1),它大部分是空的,并且在中间的某个地方有非空值(如果我们按id字段排序)。在这两种情况下,将“audio1”替换为另一个列名将产生正确的结果(对于该字段)。
另一个补充是,我确实在mysql_query中放置了一个SELECT语句,用于过滤行。根据返回的行数,第二个示例的图片可能略有不同,就像3个不重复的值,然后是第三个值的重复,直到结束。
发布于 2014-12-05 22:40:24
我修好了。长话短说--很明显:在循环周期之间,$link1变量不会改变,以防if不是true。我需要做的是将$link1 = "";或unset ($link);放在while之后,在这种情况下,如果遇到$row['audio1']的空值,它将保持真正的空值,而不是对每一个新行重用旧值。
https://stackoverflow.com/questions/27158187
复制相似问题