php - 将 NULL 传递给旨在在 PHP 中构建 MySQL 查询的函数

标签 php mysql

语言:PHP 和 MySQL

数据库中有一些行的列值为 NULL。我有一个函数,可以在收到 $params 数组时构建查询。以下是该函数中的相关代码(用于构建 WHERE 子句):

    if (isset($params['where'])) {
        $query .= "WHERE ";
        $count = count($params['where']);
        foreach ($params['where'] as $key => $value) {
            $count--;
            if ($count) {
                $query .= "`$key` ".$value['sign']." '".$value['text']."' AND ";
            } else {
               $query .= "`$key` ".$value['sign']." '".$value['text']."' ";
            }
        }
    }

问题是,当我将 $value['text'] 设置为 null 时,结果如下:

SELECT * FROM `db_profiles` WHERE `committed` IS '' LIMIT 100

如果我将其设置为 $value['text'] = 'NULL',则会得到以下结果:

SELECT * FROM `db_profiles` WHERE `committed` IS 'NULL' LIMIT 100

这当然不会产生任何结果。有什么想法吗?

答案

    if (isset($params['where'])) {
        $where_segment = array ();
        foreach ($params['where'] as $key => $value) {
            if (is_null($value['text'])) {
                $where_segment[] = "`".$key."`"." IS NULL";
            } else {
                $where_segment[] = "`$key` ".$value['sign']." '".$value['text']."' ";
            }
        }
        $query .= " WHERE ".implode('AND', $where_segment);
    }

最佳答案

  $string_array = array();

    foreach($params['where'] as $field => $value) {

        if(is_null($value)) {
            $string_array[] = "`$field` IS NULL";
        }
        else {
            $string_array[] = "`$field`='$value'";
        }

    }

 $where_string = "WHERE ".implode(" AND ", $string_array);


 $sql = "SELECT * FROM `db_profiles` $where_string";

请注意,如果 $value 为 NULL,我会省略 NULL 短语周围的 '' 标记。

关于php - 将 NULL 传递给旨在在 PHP 中构建 MySQL 查询的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15028345/

相关文章:

php - 我如何解决 Laravel 4 中的 "Target [Interface] is not instantiable"?

php - 如何检查 php 中的当前日期是否已过到期日期?

php - 如何快速搜索数百万个字符串?

mysql - MySQL :how to use Wildcard in Subquery?

mysql - MYSQL 中的 PATINDEX() 替换

php - 如何从 php 或 mysql 中的引用 ID 数组中选择数据?

Mysql选择复制列到另一个,id没有连续

php - 将现有帐户链接到 Facebook - 问题/问题

PHP Trait 碰撞构造函数

php - str_replace 没有按预期工作