我正试图按字段"number"降序排列表"tech_inquiry"中的数据。这应该使结果按年份排序。每个"数字"字段都对应于另一个带有标题/日期(访问者实际查看的内容)的字段,我无法按其排序,因为日期位于标题的末尾,并不总是在同一位置。
此外,表"techn_inquiry_allowed"确定了登录时可查看的内容。
话虽如此,代码如下:
<?
$query2=mysql_query("SELECT * FROM tech_inquiry_allowed where term_code = '$term_code' ");
while($row2=mysql_fetch_assoc($query2))
{
$id2=$row2['id'];
$query3=mysql_query("SELECT * FROM tech_inquiry WHERE id= '$id2' ORDER BY number DESC");
$row3=mysql_fetch_assoc($query3);
$name3=$row3['name'];
?>
<hr />
<li><a href="get_file.php?id=<? echo $id2; ?> "><? echo $name3; ?> </a> </li>
<?
}
?>
此外,我还有另一个"管理"部分,可以正确地排序数据。唯一的区别是没有条件"where"子句,因为不需要用户身份验证(它用于向表中添加数据)。
这是代码:
<?
$query2= mysql_query("SELECT * from tech_inquiry ORDER BY number DESC");
while($row2=mysql_fetch_assoc($query2))
{
$id2=$row2['id'];
$name2=$row2['name'];
?>
<hr />
<li><a href="get_file.php?id=<? echo $id2; ?> "><? echo $name2; ?> </a> </li>
<?
我想知道我们是否在循环中运行查询。
这里有很多问题。首先,您只需要一个查询就可以实现这一点。请稍后阅读有关SQL查询编写的内容。你会发现它非常有用。
其次,你使用的代码比你需要的要多得多。下面是简化、更干净、可能更快的代码。
<?php
$query = mysql_query("SELECT * FROM tech_inquiry ti WHERE id IN (SELECT id FROM tech_inquiry_allowed where term_code = '$term_code') ORDER BY ti.number");
while ($row = mysql_fetch_object($query)) {
echo "<hr />n<li><a href='get_file.php?id={$row->id}'>{$row->name}</a></li>";
}
?>
您没有循环内部查询。无论如何,您应该使用一个查询:
SELECT allowed.*, inquiry.*
FROM tech_inquiry_allowed allowed
INNER JOIN tech_inquiry inquiry
ON inquiry.id = allowed.id
WHERE term_code = '$term_code'
ORDER BY inquiry.number DESC