【发布时间】:2013-01-23 13:31:04
【问题描述】:
首先我想提一下,我一直在疯狂地尝试和寻找解决方案,但到目前为止还没有运气。我的问题如下:
我有一个包含几十行的 MySQL 数据库,我创建了一个 jQuery 网格来显示数据;这个页面已经在工作了。 根据要求,我正在整理一个页面,人们可以在其中从复选框中选择几个选项并过滤结果。这就是它的工作原理:
第 1 页将有 3 组复选框(姓名、地点、语言),每组都有不同的选项([姓名:大卫、尼克等]、[地点:纽约、华盛顿、孟买、伦敦、迈阿密]、 [语言:英语,西班牙语]。一旦用户选择了他的选项,它将提交一个类似这样的表单
grid.php?location=Washington&location=Mumbai&language=English&name=David
创建字符串很容易,但接收器将获取此参数并将其放入数组中以创建 SQL 语句,这就是我苦苦挣扎的地方。
我尝试过这样的事情:
$location= $_GET['location'];
$language= $_GET['language'];
$name= $_GET['name'];
if($location!=""){
$where[] = 'location=';
$where_args[] = $location;
}
//same code for the other 2 options
$where_clause = implode(' OR ', $where_args);
$sql_json = "SELECT * FROM myTable WHERE $where_clause ORDER BY id DESC";
没有一个选项是强制性的,因此查询需要接受该值可能设置也可能不设置的可能性,因此它最终可能类似于 grid.php?language=English。
我知道上面的代码不太好用,但如果有人能指出正确的方向,我将不胜感激。
【问题讨论】:
-
那么,他可以选择多个位置吗?因为您的表单提交示例显示如此。
-
正确。 Kristen 下面的代码有效,但不适用于我目前的情况。我提到不仅变量有时可以为空(不传递),而且在我创建 SELECT SQL 语句时所有变量都可以重复。该变量可能如下所示: grid.php?location=Washington&location=Mumbai&language=English&name=David&name=Mario 请注意 2 个“名称”变量和 2 个“位置”。 Kristen 的代码有效,但不适用于数组,因为最后一个变量将覆盖其他变量,这意味着我可以传递“Mario”但不能传递“David”。还有什么建议吗?
-
您是否尝试过通过 $_SERVER['QUERY_STRING'] 而不是 $_GET 访问获取值? $_GET 方式将只返回一个特定名称的最后一个值。并且 $_SERVER['QUERY_STRING'] 将返回整个字符串,可以对其进行拆分和操作。请参阅此链接:stackoverflow.com/questions/2605414/…。
-
这正是我最终使用 $_SERVER['QUERY_STRING'] 遍历数组所做的事情。感谢 Mt.Schneiders 和 @Akam,这个社区很震撼!!