我有一个页面,我在URL中使用参数作为我的SQL查询的过滤器。 我从URL参数创建了一个变量:
$station = htmlspecialchars($_GET["station"]);
然后根据是否设置了URL参数来设置条件查询:
if(isset($_GET['station'])) {
$query = "SELECT * FROM song_of_the_day WHERE station = '$station'";
}
else {
$query = "SELECT * FROM song_of_the_day WHERE end_date >= CURDATE()";
}
$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_fetch_row($result);
然后我在表格中显示结果:
echo "<table width='758' border='0' cellpadding='10' cellspacing='0' class='myTable'>";
while($row = mysql_fetch_array( $result )) {
echo '<tr>';
echo '<td align="left" width="48">' . $row['station'] . '</td>';
echo '<td align="left">' . date('M j, Y',strtotime($row['end_date'])) . '</td>';
echo '<td width="24" align="left"><a href="edit.php?id=' . $row['id'] . '"><img src="http://yourligas.yourli.com/ad-inventory/edit.png" border="0"></a></td>';
echo '<td width="24" align="left"><a href="delete.php?id=' . $row['id'] . '" data-confirm="Are you sure you want to delete this entry?" ><img src="http://yourligas.yourli.com/ad-inventory/remove.png" border="0"></a></td>';
echo "</tr>";
echo '</tbody>';
}
echo "</table>";
当ELSE命令使用查询时,查询可以找到,我不依赖于我的SQL中的参数,但是当查询显示URL参数ISSET只有一行时我遇到的问题当有多个行匹配实际数据库中的条件时。有人知道为什么会这样吗?
谢谢
答案 0 :(得分:0)
在这一行中,您在尝试获取行数时似乎正在消耗第一行数据:
$num_rows = mysql_fetch_row($result);
这将从结果光标中删除第一行。
相反,您可能打算执行以下操作:
$num_rows = mysql_num_rows($result);