PHP和MySQL用户过滤
我有一个web应用程序,它显示从mysql数据库中获取并呈现给用户的事件列表 然后,用户可以根据几个(8-10)“类型”过滤结果 我的问题是,我应该如何处理这个问题?基本上,我需要做的是获取用户对过滤器的输入(在PHP和MySQL用户过滤,php,mysql,Php,Mysql,我有一个web应用程序,它显示从mysql数据库中获取并呈现给用户的事件列表 然后,用户可以根据几个(8-10)“类型”过滤结果 我的问题是,我应该如何处理这个问题?基本上,我需要做的是获取用户对过滤器的输入(在$\u GET中),然后找出他要过滤的类型,并根据这些类型更改我的sql查询 我如何以一种不太复杂的方式来做呢?我曾想过使用许多“if”或“case”语句,但我不确定这是否是最好的解决方案,因为对于一件非常简单的事情,它需要大量的编码 谁能给我一些建议吗? 谢谢 示例数据库: EVENT
$\u GET
中),然后找出他要过滤的类型,并根据这些类型更改我的sql查询
我如何以一种不太复杂的方式来做呢?我曾想过使用许多“if”或“case”语句,但我不确定这是否是最好的解决方案,因为对于一件非常简单的事情,它需要大量的编码
谁能给我一些建议吗?
谢谢
示例数据库:
EVENT_ID EVENT_NAME EVENT_TYPE
1 test regular
2 test2 vip
3 test4 testtype
示例$\u获取:
$_GET['regular'] = 'on'
…它应该允许多重选择还是只允许一个过滤器选择。
如果1您可以简单地使用case函数,或者可以使用javascript的onchange函数。您可能应该使用复选框创建一个类型数组
<input type="checkbox" name="types[]" value="regular" /> Regular
<input type="checkbox" name="types[]" value="vip" /> VIP
如果将它们作为字符串保留在db中,则可以执行相同的操作,但必须在值周围使用“”
当然,您必须确保这一点从许多复选框中获取GET并创建SQL查询。您需要更改列名和$getOptions数组。$getOptions元素的键是类型的名称
$getOptions = array(
'regular' => $_GET['regular'],
'vip' => $_GET['vip'],
'testtype' => $_GET['testtype']
);
$sql = "SELECT * FROM events";
$sqlOptions = array();
foreach($getOptions as $key => $value)
{
if($value == 'on')
{
$sqlOptions[] = $key;
}
}
if(!empty($sqlOptions))
{
$sql .= " WHERE EVENT_TYPE IN ('" . implode("','", $sqlOptions) . "')";
}
// Execute $sql
在构建MYSQL查询时,请提供您的代码(至少是php$\u GET和MYSQL)(例如,作为字符串与$\u GET-Parameters组合),请记住检查值是否在特定范围内,或者至少转义/删除特殊字符以防止SQL注入。很抱歉,我没有提到,多选可用OK,太好了。我会用它,但这只是解决方案的一部分。然后如何组装mysql查询?假设所有内容都在一个数组中。正如我在上面提到的,请记住测试值或转义特殊字符以避免sQL注入。
$getOptions = array(
'regular' => $_GET['regular'],
'vip' => $_GET['vip'],
'testtype' => $_GET['testtype']
);
$sql = "SELECT * FROM events";
$sqlOptions = array();
foreach($getOptions as $key => $value)
{
if($value == 'on')
{
$sqlOptions[] = $key;
}
}
if(!empty($sqlOptions))
{
$sql .= " WHERE EVENT_TYPE IN ('" . implode("','", $sqlOptions) . "')";
}
// Execute $sql