使用变量PHP传递订单
我有下一个代码,但使用ORDER by无法获得所需的结果:使用变量PHP传递订单,php,mysql,sql-order-by,Php,Mysql,Sql Order By,我有下一个代码,但使用ORDER by无法获得所需的结果: //OrderBy WHERE条件 如果($sort\u by==“0”)$sortby\u condition=“ORDER by mv\u user\u ranking.ranking\u date DESC”; 如果($sort_by==“1”)$sortby_condition=“ORDER by mv_user_info.age DESC”; 如果($sort\u by==“2”)$sortby\u condition=“OR
//OrderBy WHERE条件
如果($sort\u by==“0”)$sortby\u condition=“ORDER by mv\u user\u ranking.ranking\u date DESC”;
如果($sort_by==“1”)$sortby_condition=“ORDER by mv_user_info.age DESC”;
如果($sort\u by==“2”)$sortby\u condition=“ORDER by mv\u user\u info.sex DESC”;
$query=“从mv\u用户信息中选择*
LEFT JOIN mv_user_lang_Interest ON mv_user_lang_Interest.uid=mv_user_info.uid
在mv_user_disposibility.uid=mv_user_info.uid上左键连接mv_user_disposibility
在mv_user_ranking.uid=mv_user_info.uid上左键加入mv_user_排名
其中国家=“$country”和城市=“$city”和
mv_user_lang_interest.english='1'和
mv_user_lang_interest.english_level='2'和
mv_user_info.uid!=“$uid”
.$sortby_条件。
“限制0,50”;
echo$query;
$result=mysql\u query($query)或die(mysql\u error());
我做错了什么?从技术上讲,我看不出该查询有任何问题,但您可以做一件事:在该查询上创建另一个查询,使该查询成为子查询,然后从上述查询排序。您的代码如下所示:
// OrderBy WHERE Conditions
if ($sort_by == "0") $sortby_condition = "ORDER BY ranking_date DESC ";
if ($sort_by == "1") $sortby_condition = "ORDER BY age DESC ";
if ($sort_by == "2") $sortby_condition = "ORDER BY sex DESC ";
//Note I have removed the table name from order by clause because in the super-query we will only have column name.
$query ="
Select * From (
SELECT * FROM mv_user_info
LEFT JOIN mv_user_lang_interested ON mv_user_lang_interested.uid = mv_user_info.uid
LEFT JOIN mv_user_disponibility ON mv_user_disponibility.uid = mv_user_info.uid
LEFT JOIN mv_user_ranking ON mv_user_ranking.uid = mv_user_info.uid
WHERE country ='$country' AND city = '$city' AND
mv_user_lang_interested.english = '1' AND
mv_user_lang_interested.english_level = '2' AND
mv_user_info.uid != '$uid'
LIMIT 0, 50) as a ".$sortby_condition;
echo $query;
$result = mysql_query($query) or die(mysql_error());
我希望这有帮助这看起来很有趣,好吧,让我们试试
// OrderBy WHERE Conditions
//i don't know what was passed as $sort_by value
//perhaps you may try
$sort_by = (integer)$sort_by; //casting
if ($sort_by == 0){$sortby_condition = "ORDER BY mv_user_ranking.ranking_date DESC ";}//if () if() three times not an optimize way, try if, elseif
elseif ($sort_by == 1){ $sortby_condition = "ORDER BY mv_user_info.age DESC ";}//write your code in block "{}" this may prevent your block of statement mix
elseif ($sort_by == "2"){ $sortby_condition = "ORDER BY mv_user_info.sex DESC ";}
$query ="SELECT * FROM mv_user_info
LEFT JOIN mv_user_lang_interested ON mv_user_lang_interested.uid = mv_user_info.uid
LEFT JOIN mv_user_disponibility ON mv_user_disponibility.uid = mv_user_info.uid
LEFT JOIN mv_user_ranking ON mv_user_ranking.uid = mv_user_info.uid
WHERE country ='$country' AND city = '$city' AND
mv_user_lang_interested.english = '1' AND
mv_user_lang_interested.english_level = '2' AND
mv_user_info.uid != '$uid'"
.$sortby_condition.
"LIMIT 0, 50";
echo $query;
$result = mysql_query($query) or die(mysql_error());
如果有什么问题尽管问
你最好把整行文字都写对,这样我们才能更好地回答你:)看起来没问题。。。您是否尝试在phpmyadmin或类似工具中查看结果(您回显)查询返回的内容?“我没有得到所需的结果”这就像是忽略了按句子排序。变量
$sort\u by
没有您期望的值。检查其值。echo$sort\u by
查看值是什么。您可以将其更改为if/elseif/else
,以在值不是0,1,2