加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用php变量创建动态mysql查询

发布时间:2020-12-13 21:28:43 所属栏目:PHP教程 来源:网络整理
导读:我有一个html表,加载mySQL数据库表中的所有内容.我有与mySQL表的列相关的下拉列表 – 当用户选择其中一个下拉列表时,它使用 AJAX来查询数据库. 我需要弄清楚如何动态构建查询,因为有时下拉列表将为空(即他们不想按该列过滤). 做这个的最好方式是什么? 目前
我有一个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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读