我正在我的网站上搜索引擎。用户可以添加在网址中使用GET
提交的条件。
当用户选择例如1条标准时,它看起来像这样:
localhost/search.php?course=1&price=&name=
他们有3个可以选择的标准,所以你看他只选择了课程。
现在我必须根据标准从数据库中进行选择,因此我的代码如下所示:
if ($_GET['price'] > 0 && $_GET['name'])
{
$search_price = $_GET['price'];
$search_name = $_GET['name'];
$result2 = mysql_query("SELECT id, name, price, views, userid, type, anonymous FROM files WHERE course='$course_id' AND price < $search_price AND name LIKE '%$search_name%'");
}
elseif ($_GET['price'] > 0)
{
$search_price = $_GET['price'];
$result2 = mysql_query("SELECT id, name, price, views, userid, type, anonymous FROM files WHERE course='$course_id' AND price < $search_price");
}
elseif ($_GET['name'])
{
$search_name = $_GET['name'];
$result2 = mysql_query("SELECT id, name, price, views, userid, type, anonymous FROM files WHERE course='$course_id' AND name LIKE '%$search_name%'");
}
else
{
$result2 = mysql_query("SELECT id, name, price, views, userid, type, anonymous FROM files WHERE course='$course_id'");
}
while ($row2 = mysql_fetch_assoc($result2))
{
.....
但这不是正确的方法,因为如果最终用户可以选择10个标准,这将是一个非常长的代码
我该如何解决这个问题?
答案 0 :(得分:1)
我要做的是动态创建sql查询,然后在最后执行它。像这样的东西
$query_string = "SELECT blahblah, blahblah, blah blah from blahx where 1=1 ";
$where = "";
if(isset($_GET['somecriteria']))
{
$where .= " AND blahblah = $_GET['somecriteia'] ";
}
if(isset($_GET['someOTHERcriteria']))
{
$where .= " AND blahblah=$_GET['someOTHERcritera'] ";
}
mysql_query($query_string . $where);
等。 请注意,这只是为了向您展示如何实现您的目标。这显然容易受到SQL注入攻击,你必须清理它们。
答案 1 :(得分:0)
使用$ _post向php脚本发送大量信息。使用get时,您应该创建url,以便仅在填充时包含get调用。因此,如果没有选择价格,则网址不应包含“price =”。这将导致您的接收脚本出现问题。
您的数据库脚本可以通过一次调用完成,只包括所选标准。
Myqsl已被折旧,您需要查看Myqsli或PDO