我有一个html表,可将mySQL数据库表中的所有内容加载。我有与该mySQL表的列相关的下拉菜单-当用户选择下拉菜单之一时,它将使用AJAX查询数据库。
我需要弄清楚如何动态构建查询,因为有时下拉列表将为空(即,它们不想按该列进行过滤)。
做这个的最好方式是什么?
目前我有这样的事情:
$stationFilter = $_GET['station']; $verticalFilter = $_GET['vertical']; $creativeFilter = $_GET['creative']; $weekFilter = $_GET['week']; $result = mysql_query("SELECT * FROM $tableName WHERE STATION_NETWORK = '$stationFilter' AND VERTICAL = '$verticalFilter' AND CREATIVE = '$creativeFilter' AND WK = '$weekFilter'"); $data = array(); while ($row = mysql_fetch_row($result) ) { $data[] = $row; } $finalarray['rowdata'] = $data;
您可以想象这是行不通的,因为如果这些字段中的任何一个为空,查询都会失败(或者不返回任何内容)。
显然,创建这样的“静态”查询确实会使某些变量为空的困难。
动态创建该查询以使其仅输入不为空的查询的最佳方法是添加到查询中以便成功完成并显示适当的数据?
只需检查变量是否包含值,如果它们包含,就可以像下面这样构建查询:
unset($sql); if ($stationFilter) { $sql[] = " STATION_NETWORK = '$stationFilter' "; } if ($verticalFilter) { $sql[] = " VERTICAL = '$verticalFilter' "; } $query = "SELECT * FROM $tableName"; if (!empty($sql)) { $query .= ' WHERE ' . implode(' AND ', $sql); } echo $query; // mysql_query($query);