如何在PHP查询中使用通配符

时间:2016-06-27 02:17:51

标签: php mysql

我在PHP俱乐部会员网页上有一个表格过滤功能。我做了它,以便用户可以过滤表并选择要在表中显示的成员。例如,他可以选择成员所在的国家或州,然后点击显示。我正在使用准备好的声明。

问题是,我需要使用通配符来简化编码。如何在PHP MySQL查询中使用通配符?我会使用通配符,例如,如果用户不想要特定的国家/地区,而是希望显示所有国家/地区的所有成员。

我知道没有指定WHERE country=会自动选择任何国家/地区,但我已经构建了它,因此像国家的SELECT控件这样的每个控件都有一个像" CA"或" NY"和" *"如果用户在"所有国家"下离开该控件。然后,将提交的值添加到查询中,如:

$SelectedCountry = $_POST["country"];
sql .= " WHERE country=" . $SelectedCountry;

但问题是使用WHERE country=*似乎不起作用。没有错误,只是不起作用。是" *" PHP MySQL中的通配符?

3 个答案:

答案 0 :(得分:2)

*运算符进行比较时,=在SQL中不是通配符。您可以使用like运算符并传递%以允许任何内容。

执行此操作时,%应该是绑定的唯一内容。 $Bind_country = "'%'";不正确,因为驱动程序已经引用该值并转义引号。所以你的查询将如下:

WHERE country ='\'%\''

=也需要like。所以你想要

$bind_country = '%'; 

然后查询应该是:

$sql = 'select * from table where country like ?';

如果这是我的应用程序,我会动态构建where部分。

答案 1 :(得分:0)

*子句中使用WHERE是不对的。你只能给予合法的价值。例如:

// looking for an exact value
SELECT * FROM table WHERE column = 'value'


// you can also do this when looking for an exact value
// it works even if your $_POST[] has no value
SELECT * FROM table WHERE column = 'value' OR '$_POST["country"]' = ''


// looking for a specific or not exact value
// you can place % anywhere in value's place
// % denotes the unknown characters of the value
// it works also even if your $_POST[] has no value
// results will not be the same when you're using AND or OR clause
SELECT * FROM table WHERE column LIKE '%val%'

答案 2 :(得分:0)

我认为以下链接可以解决您的问题。 只需看看并选择您需要的东西。 谢谢。 http://www.w3schools.com/sql/sql_wildcards.asp