首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌套时间循环php

嵌套时间循环php
EN

Stack Overflow用户
提问于 2016-02-03 09:56:07
回答 2查看 208关注 0票数 0

我为这个问题而绞尽脑汁。因此,我有一个文本文件"$file“,我正在逐行读取第一个while-循环。这是可行的;当我在其中回显"$usertext“时,它会很好地打印出文件中的所有行。

因此,我想使用$usertext作为我的DB查询的条件,然后循环遍历满足该条件的DB的所有行。不知何故,只有最后一行$usertext进入while-循环(当我在第二个while-循环中回显$usertext时,它是唯一被打印出来的)。

为什么我的文本文件的所有行都不通过第二个while-循环?

代码语言:javascript
运行
复制
if ($file) {
 while (($line = fgets($file)) !== false) {
  $usertext = $line;
  echo $usertext."\n";

  $result = $db->query("SELECT user, artist, artist_mbid, track, track_mbid, COUNT(*) as playcount FROM users WHERE user='$usertext' GROUP BY artist, track, user");

  while($row=$result->fetchArray()){
   echo $usertext."\n"; 
     //I also used $row["user"]; does not make any difference
  }
 } 
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-03 10:18:51

与SQL错误相比,更有可能是未找到的数据,因为SQL错误将停止处理。

fgets()的输出AFAIK包括断线。这意味着$usertext的内容可能包含除最后一条记录之外的每条记录的中断行,因此只有对$result->fetchArray()的最后一次调用才会给出输出记录,从而进入while循环。

我的建议是尝试改变这一行:

代码语言:javascript
运行
复制
$usertext = $line;

代码语言:javascript
运行
复制
$usertext = trim($line);

它将删除任何不必要的换行符/空白。

票数 1
EN

Stack Overflow用户

发布于 2016-02-03 10:01:34

$result->fetchArray()可能会为某些结果集返回一个falsey值。

确保$usertext被正确地插入到查询中,并且没有中断它,并确保确实有要返回的行。

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

https://stackoverflow.com/questions/35173682

复制
相关文章

相似问题

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