Php 按asc或desc搜索查询顺序
您好,从查询中执行“order by”而无需再次执行查询的最佳方式是什么?假设当我必须使用表单查找姓名或姓氏时,我有一个搜索查询,例如:Php 按asc或desc搜索查询顺序,php,mysql,Php,Mysql,您好,从查询中执行“order by”而无需再次执行查询的最佳方式是什么?假设当我必须使用表单查找姓名或姓氏时,我有一个搜索查询,例如: //Array for storing WHERE part of query $where=array(); if(!empty($name)) AND !empty($surname)){ $where[]="Name LIKE '%$name%'" . "AND Surname LIK
//Array for storing WHERE part of query
$where=array();
if(!empty($name)) AND !empty($surname)){
$where[]="Name LIKE '%$name%'" .
"AND Surname LIKE '%$surname%'";
}
elseif(!empty($name)){
$where[]="Name LIKE '%$name%'";
}
elseif(!empty($surname)){
$where[]="Surname LIKE '%$surname%'";
}
$where = implode(' AND ', $where);
$sql="SELECT Name,Surname FROM TABLE WHERE $where ORDER BY Name DESC";
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res, MYSQL_NUM)) {
$name = $row[0];
$surname = $row[1];
echo"$name";
echo"$surname";
}
在搜索“Name LIKE%namese%”后,如何在ASC模式(按名称排序ASC)下显示姓名或姓氏,而无需再次执行SQL查询?例如,当我搜索包含“ich”单词的名称时,我希望以这种方式列出一个列表:
MICHAEL
PICHAEL
XICHAEL
=> the ASC mode
XICHAEL
PICHAEL
MICHAEL
=> the DESC mode
我真的不认为我正确地理解了你的问题,但我想在这里冒险一下,我猜你只是想按两个不同的列排序
$sql="SELECT Name,Surname FROM TABLE WHERE $where ORDER BY Name DESC, Surname ASC";
顺便说一下,您的查询字符串中有一个额外的“
此外,您可能希望研究使用mysql\u fetch\u assoc
而不是mysql\u fetch\u数组
这只是我现在的吹毛求疵…但不是使用:
echo"$name";
echo"$surname";
你可以写:
echo $name;
echo $surname;
你是说像这样颠倒数组的顺序吗
<?php
//Array for storing WHERE part of query
$where=array();
if(!empty($name) && !empty($surname)){
$where[]="Name LIKE '%$name%'" .
"AND Surname LIKE '%$surname%'";
}
elseif(!empty($name)){
$where[]="Name LIKE '%$name%'";
}
elseif(!empty($surname)){
$where[]="Surname LIKE '%$surname%'";
}
$where = implode(' AND ', $where);
$sql="SELECT Name,Surname FROM TABLE WHERE $where ORDER BY Name";
$res = mysql_query($sql);
$names = array();
$surnames = array();
$wholeNames = array();
$x='0';
while ($row = mysql_fetch_array($res)) {
if(!empty($row['Name'])){
$names[$x] = $row['Name'];
}
if(!empty($row['Surname'])){
$surnames[$x] = $row['Surname'];
}
if(!empty($row['Name'])&&!empty($row['Surname'])){
$wholeNames[$x] = $row['Name'].' '.$row['Surname'];
}
$x++;
}
print "<pre>\n";
print_r ($names);
print_r ($surnames);
print_r ($wholeNames);
print "</pre>\n";
$reversed_names=array_reverse($names);
$reversed_surnames=array_reverse($surnames);
$reversed_wholeNames=array_reverse($wholeNames);
print "<pre>\n";
print_r ($reversed_names);
print_r ($reversed_surnames);
print_r ($reversed_wholeNames);
print "</pre>\n";
?>
谢谢您的回复,但我想先显示一个结果(没有反转的结果),然后添加一个链接来显示第二个结果(反转的结果)。所以您想在第一页上拉一个查询,然后在第二页上重新使用它?