【发布时间】: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 扩展。