从URL GET参数创建MySQL查询

时间:2014-02-27 16:48:45

标签: php sql search

嘿,我是PHP和MYSQL的初学者,我遇到了一个基本问题。如何从URL参数中进行查询

我的网址示例:

www.abs.com/index.php?cat=shoes

www.abs.com/index.php?cat=shoes&subcat=sports

www.abs.com/index.php?cat=shoes&subcat=sports&color=blue

我如何在我的查询中处理这种URL,这只是我的示例查询,我的两个表都有很多字段。我需要有关查询的WHERE部分的帮助,主要问题是我在我的URL中传递(cat),它在我的数据库中是(b.category)。

我的查询:

select a.p_id, a.p_name, a.p_prize, b.p_id b.color, b.category, b.subcategory
FROM products a INNER JOIN details b ON a.p_id=b.p_id

2 个答案:

答案 0 :(得分:2)

这很容易:

$cat = $_GET['cat'];
$query = "SELECT a.p_id, a.p_name, a.p_prize, b.p_id b.color, b.category, b.subcategory
    FROM products a 
    INNER JOIN details b ON a.p_id=b.p_id
    WHERE b.category = '" . mysql_real_escape_string(trim($cat)) . "'";

请注意以下几点,首先使用mysql_real_escape_string来帮助保护您的数据库。它有助于防止SQL注入,但并非完全万无一失。

另请注意, MySQL _ * 已弃用。你不应该再在其中编写查询了。您应该查看MySQLiPDO

答案 1 :(得分:1)

首先,您需要通过将URL参数分配给PHP变量来使用PHP处理URL:

$cat = $_GET['cat'];
$subcat = $_GET['subcat'];
$color= $_GET['color'];

然后您可以使用这些变量来创建MySQL查询字符串:

$queryString = "SELECT a.p_id, a.p_name, a.p_prize, b.p_id b.color, b.category, b.subcategory
FROM products a INNER JOIN details b ON a.p_id=b.p_id WHERE b.category = '" . mysql_real_escape_string( $cat ) . "' AND b.subcategory = '" . mysql_real_escape_string( $subcat ) . "' AND b.color = '" . mysql_real_escape_string( $color ) . "' ";

然后,您可以使用此查询来查询数据库。