按非列元素排序mysql表

时间:2017-07-07 03:27:19

标签: php mysql

我正在开发一个Android应用程序,用户可以根据自己想要的区域查看数据。我在我的php后端代码中获取该区域。我有一个表'help',其中有一列name。我想要做的是根据使用similar_text的百分比匹配或者用户输入和表name数据之间的相似内容按降序排序整个表。我不知道该怎么做。这个我走了多远。

<?php
require_once "Database/DB_Connect.php";
$db = new DB_Connect();
$db_conn = $db->connect();
$area=$_REQUEST['area']
$name1=array();
$query="SELECT `name` from `help`";
$result=mysqli_query($db_conn,$query);
while ($row=$result->fetch_assoc()) {
    $name=$row['name'];
    similar_text($area,$name,$percentage);
    $query1="SELECT * FROM `help` ORDER BY '$percentage' DESC ";
    $result1=mysqli_query($db_conn,$query1);
    while($row1=$result1->fetch_assoc()){
        $name1[]=$row1;
    }
}   
echo json_encode($name1);
$db_conn->close();
?>

我得到的输出是整个表数据按names降序排列多次

1 个答案:

答案 0 :(得分:0)

我不知道这是否是最佳答案,但是,我想出了一个解决方案。

<?php
require_once "Database/DB_Connect.php";
$db = new DB_Connect();
$db_conn = $db->connect();
$name1=array();
$id=array();
$area = $_REQUEST['area'];
$query="SELECT * FROM `help`";
$result=mysqli_query($db_conn,$query);
while ($row=mysqli_fetch_array($result)) {
    $name1[]=$row['name'];
    $id[]=$row['id'];
} 
$sorted_arr=array();
$sorted_id=array();
for($i=0; $i<count($name1); $i++) {
   $temp_arr[$i] = similar_text($search, $name1[$i]);
}
arsort($temp_arr);
foreach($temp_arr as $k => $v) {
    $sorted_arr[] = $name1[$k];
    $sorted_id[]=$id[$k];
}
$data = [];
for($i=0; $i<count($name1); $i++) {
    $sql="SELECT * FROM `help` WHERE `id`='$sorted_id[$i]' ";
    $result = $db_conn->query($sql);
    $data[]=$result->fetch_assoc();   
}
echo json_encode($data);
$db_conn->close();
?>