2011-04-22 111 views
-1

PHP为什么我的while循环只从数据库返回一个值?

$nextday = mysql_query("SELECT * FROM Tour_Dates WHERE DATEDIFF(tourDate, NOW()) > 0 ORDER BY tourDate LIMIT 1")or die(mysql_error()); 
$upcomingdates = mysql_query("SELECT * FROM Tour_Dates WHERE DATEDIFF(tourDate, NOW()) > 0 ORDER BY tourDate")or die(mysql_error()); 
$passeddates = mysql_query("SELECT * FROM Tour_Dates WHERE DATEDIFF(tourDate, NOW()) < 0 ORDER BY tourDate")or die(mysql_error()); 

HTML

<label class="next-day"><? while($row = mysql_fetch_array($nextday)){echo $row['city'] ." | " .date("m.d.Y",strtotime($row['tourDate']));} ?></label> 

<div class="upcoming"> 
<ul> 
<? 
while($row = mysql_fetch_array($upcomingdates)) 
{ 
echo '<li><span class="li-date">'. date("m.d.Y",strtotime($row['tourDate'])) .'</span><span class="li-address">' . $row['address'] . '</span><span class="li-city">' . $row['city'] . '</span><span class="li-time">' . date("g.i A",strtotime($row['tourTime'])).'</span></li>'; 
} 
?> 
</ul> 
</div> 
<div class="passed"> 
<ul> 
<? 
while($row = mysql_fetch_array($passeddates)) 
{ 
echo '<li><span class="li-date">'. date("m.d.Y",strtotime($row['tourDate'])) .'</span><span class="li-address">' . $row['address'] . '</span><span class="li-city">' . $row['city'] . '</span><span class="li-time">' . date("g.i A",strtotime($row['tourTime'])).'</span></li>'; 
} 
?> 
</ul> 
</div> 
+2

确定查询返回多个值吗? – 2011-04-22 15:49:57

+0

它正在工作,但现在它只返回一件事。我现在在数据库中有三件事。你有没有其他办法可以做到这一点?我不知道如何把它变成一个foreach循环 – Montez 2011-04-22 15:54:02

+0

嗯,代码看起来好像到目前为止。你知道你的查询中有'LIMIT 1'吗? – 2011-04-22 15:57:53

回答

0

我的猜测是,你正在使用mysql_fetch_array,但随后引用元素,就好像是一个关联数组。尝试使用以下之一:

mysql_fetch_array($upcomingdates, MYSQL_ASSOC) 

mysql_fetch_assoc($upcomingdates) 
+0

试过。没有变化 – Montez 2011-04-22 16:05:56

+0

固定!对于我的数据库设置方式,一定是奇怪的。我重新创建它,现在一切正常。 – Montez 2011-04-22 17:22:55

0

删除的表在数据库中,再插入它,一切都工作了!我猜想我第一次导入它时出了问题。