首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用(循环遍历) PHP中的MySQL行列表会产生意想不到的结果

问调用(循环遍历) PHP中的MySQL行列表会产生意想不到的结果
EN

Stack Overflow用户
提问于 2014-11-26 20:21:14
回答 1查看 99关注 0票数 0

PHP代码的两个片段:

第一个很好,按顺序给出不同行的值。

代码语言:javascript
复制
while ($row = mysql_fetch_assoc($rst)) {
...
$link1 = $row['audio1'];
    if ($link1) {
    $link1 = $link1;
    }
...
}

第二个输出来自第一行的值,并将其应用于每个后续行。

代码语言:javascript
复制
while ($row = mysql_fetch_assoc($rst)) {
...
if ($row['audio1']) {
    $link1 = $row['audio1'];
    }
...
}

例如,第一个代码示例生成的

代码语言:javascript
复制
Audio1.mp3
Audio2.mp3
Audio3.mp3

第二个会产生

代码语言:javascript
复制
Audio1.mp3
Audio1.mp3
Audio1.mp3

问题是,为什么这两种类似的实现在输出上有所不同。

另一个删除了...s的测试用例(干净循环代码)生成了一个不同的图像:第一个示例只输出一行(第一个),第二个示例的输出与重复行相同。

正在使用的MySQL表具有以下结构:一个表INT (id)、CHAR、SMALLINT、TINYTEXT、TINYTEXT、TINYTEXT (audio1)。所有的行都被完全填充,除了最后一个(audio1),它大部分是空的,并且在中间的某个地方有非空值(如果我们按id字段排序)。在这两种情况下,将“audio1”替换为另一个列名将产生正确的结果(对于该字段)。

另一个补充是,我确实在mysql_query中放置了一个SELECT语句,用于过滤行。根据返回的行数,第二个示例的图片可能略有不同,就像3个不重复的值,然后是第三个值的重复,直到结束。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 22:40:24

我修好了。长话短说--很明显:在循环周期之间,$link1变量不会改变,以防if不是true。我需要做的是将$link1 = "";或unset ($link);放在while之后,在这种情况下,如果遇到$row['audio1']的空值,它将保持真正的空值,而不是对每一个新行重用旧值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27158187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档