两段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
问题是为什么这两个类似的实现在输出上有所不同。
删除了另一个测试用例(干净循环代码)产生了不同的图片:第一个例子只输出一行(第一个),第二个例子的输出是相同的重复行
正在使用的MySQL表具有以下结构: 一张桌子, INT(id),CHAR,SMALLINT,TINYTEXT,TEXT,TEXT,TINYTEXT(audio1)。所有行都是完全填充的,除了最后一个(audio1),它们大部分是空的,并且在中间某处有非NULL值(如果我们按id字段排序)。 更换' audio1'在两种情况下,使用另一个列名称可以得到正确的结果(对于该字段)。
另外一个补充是我确实在mysql_query中最初放置了一个过滤掉行的SELECT语句。根据返回的行数,第二个示例的图片可能略有不同,例如3个非重复值,然后重复第三个值直到结束。
答案 0 :(得分:0)
我修好了。长话短说 - 非常明显:循环周期之间$ link1变量在if
不是true
的情况下没有变化。我需要做的是在$link1 = "";
之后放置unset ($link);
或while
,在这种情况下,如果我遇到$row['audio1']
的空值,它将保持真正的空而不是为每个新行重用旧值。