是否有更有效的方法来执行以下操作?
$total_a = mysql_query("SELECT `id` FROM `table` WHERE `this` = 'that'");
$total_b = mysql_num_rows($total_a);
if(!$total_b)
{
echo 'no results';
}
else
{
$a = mysql_query("SELECT `id`, `time` FROM `table` WHERE `this` = 'that' ORDER BY `time` DESC");
while($b = mysql_fetch_assoc($a))
{
echo $b['id'].'-'.$b['time'].'<br />';
}
}
除了使用两个查询之外别无他法,是吗?
答案 0 :(得分:2)
你现在两次检索同一件事,对吧?如果根据查询1存在某些数据,则使用查询2再次检索该数据并显示它。为什么不简单地使用第二个查询?
$sql = "SELECT id, time FROM table WHERE this = 'that' ORDER BY time DESC";
$res = mysql_query($sql);
if (mysql_num_rows($res)) {
while ($b = ...) {
...
}
} else {
echo 'no results';
}
答案 1 :(得分:1)
您应该能够重复使用这样的查询:
$result = mysql_query("SELECT `id`, `time` FROM `table` WHERE `this` = 'that' ORDER BY `time` DESC");
$num_rows = mysql_num_rows($result);
if(!$num_rows)
{
echo 'no results';
}
else
{
while($row = mysql_fetch_assoc($result))
{
echo $row['id'].'-'.$row['time'].'<br />';
}
}
答案 2 :(得分:0)
从根本上说,他们是相同的查询,不是吗?!
你为什么不能这样做:
$sql = "SELECT `id`, `time` FROM `table` WHERE `this` = 'that' ORDER BY `time` DESC";
$result = mysql_query($sql);
if(mysql_num_rows($result)){
while($b = mysql_fetch_array($result))
{
echo $b['id'].'-'.$b['time'].'<br />';
}
}
else{
// no rows
}
答案 3 :(得分:-1)
只需使用:
$a = mysql_query("SELECT `id`, `time` FROM `table` WHERE `this` = 'that' ORDER BY `time` DESC");
while($b = mysql_fetch_assoc($a))
{
echo $b['id'].'-'.$b['time'].'<br />';
}
为何算数?
如果您执行类似
的操作,则只应计算可能的行数if($count){
echo "starting the stuff";
$a = mysql_query("SELECT `id`, `time` FROM `table` WHERE `this` = 'that' ORDER BY `time` DESC");
while($b = mysql_fetch_assoc($a))
{
echo $b['id'].'-'.$b['time'].'<br />';
}
echo "ending the stuff";
}