【问题标题】:First Filter then Sort results首先过滤然后排序结果
【发布时间】:2015-04-30 13:50:42
【问题描述】:

我希望你能帮助我。我的问题是我的网站上有一个 PHP+SQL 脚本,你可以在其中搜索艺术家、歌曲和资料。我有一个包含 4 个单元格的表格:标题、艺术家、流派和语言。而且我已经配置了所有内容,因此如果您在标签中输入搜索查询,一切都会正常工作。

HTML:

        <div class="search_bar">
  <form method="post" action="example.php?go">
    <div class="input-group">
      <input name="name" type="text" class="form-control" placeholder="Artist, Song, Language or Genre">
      <span class="input-group-btn">
        <input class="btn btn-default Go" name="submit" type="submit" value="Go!"></butto>
</span>

PHP+SQL:

         <?php

if(isset($_POST['submit'])){
if(isset($_GET['go'])){
$name=$_POST['name'];
;

//connect to the database
$db=mysql_connect ("example", "example", "example") or die ('Ups! Seems like something went wrong!'); 

//-select the database to use
$mydb=mysql_select_db("example");

//-query the database table
$sql="SELECT * FROM example WHERE Titel LIKE '" . $name . "%' OR Language LIKE '" . $name . "%'  OR Genre LIKE '" . $name . "%' OR Artist LIKE '" . $name . "%'";


//-run the query against the mysql query function
$result=mysql_query($sql);

//-count results


while($row=mysql_fetch_array($result)){
// \(^_^)/
//tabellen beginn ?>

         <tr>
           <td class="col-sm-1"><?php echo $Titel =$row['Titel']; ?></td>
           <td class="col-sm-2"><?php echo $Artist =$row['Artist']; ?></td>
           <td class="col-sm-2"><?php echo $Genre =$row['Genre']; ?></td>
           <td class="col-sm-2"><?php echo $Genre =$row['Language']; ?></td>
         </tr>
         <?php
}
}
else{
echo "<p>Please enter a search query</p>";
}
}
//Suchbareinstellungen_Songs
?>  

现在我的实际问题是:我希望用户可以选择动态选择是否要按字母顺序对歌曲、艺术家或语言进行排序。我想我必须使用第二个 $_GET 超全局变量,但我该如何实现它只是对搜索查询 $_GET 标记中显示的结果进行排序。

您好, 最大

【问题讨论】:

  • 您好,您不再保护自己的 sql 注入,请参阅:stackoverflow.com/questions/60174/… 了解更多信息
  • 将您的代码转换为使用mysqli 而不是使用mysql 函数。正如@Kentoro 所说,您并没有保护自己免受 SQL 注入的侵害。使用准备好的语句,mysqli 很容易启用。
  • 我会推荐使用 ORM,单独或作为框架的一部分,这是我的最爱,很容易理解,如果你滚动完成,你会看到使用 order 是多么容易通过其中的陈述:laravel.com/docs/4.2/eloquent
  • @Mari M 哎呀,对不起。只是忘记了它导致安静....*我感到羞耻*。好的,我会尝试 mysqli 谢谢和 ORM
  • 请不要做这样的 MySQL 查询。这可能导致SQL-Injections。尽可能使用 PHP 的 PDO 扩展。

标签: php sql sorting get


【解决方案1】:

你可以根据选择的选项动态改变你的 sql

伪代码示例传入:

Switch($optionchosen) {
case 1 : $sql = $sql . ' ORDER BY ARTIST';
break;
case 2 : $sql = $sql . ' ORDER BY LANGUAGE';
break;
case 3 : $sql = $sql . ' ORDER BY TITEL';
break;
}

在你完成之后执行你的

$result=mysql_query($sql);

也只是作为一个额外的提示,看看http://www.w3schools.com/php/php_mysql_prepared_statements.asp 在动态创建 sql 语句时了解 php 准备语句以保护数据库免受 sql 注入

【讨论】:

  • 确保你的 html 中有一些东西,比如一个下拉列表,它有一个字符串作为显示值,但实际值是一个整数值,因为这会稍微提高你的处理速度。
  • 我现在要下班,下班回家,所以如果它适合你,请告诉我,我会在大约 3 小时后回到电脑后面,如果你仍然需要帮助然后告诉我
猜你喜欢
  • 2018-05-15
  • 2016-11-03
  • 2023-03-05
  • 1970-01-01
  • 2013-06-29
  • 2014-01-18
  • 2013-08-29
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多