php - 将 WHERE if 条件插入 mysql 类查询中。

标签 php mysql

您好,我如何转换以下查询,这样我就不会出现错误:可捕获的 fatal error :

分页类的对象无法转换为字符串

$paginate = new pagination($page, 'SELECT * FROM properties WHERE 1', $options);


            if (!empty($sector)) { $paginate .= " AND sector = :sector"; }
            if (!empty($property_type))  { $paginate .= " AND property_type = :property_type"; }
            if (!empty($contract))  { $paginate .= " AND contract = :contract"; }
            if (!empty($minimum_price))  { $paginate .= " AND price BETWEEN :minimum_price AND :maximum_price"; }
            if (!empty($m2_from))  { $paginate .= " AND m2 BETWEEN :m2_from AND :m2_until"; }
            if (!empty($contract))  { $paginate .= " AND bedrooms = :bedrooms"; }

最佳答案

$paginate是pagination类的对象变量,所以它的变量类型是object。我会先构建查询,然后创建对象。

因此,我们在这里所做的是创建查询的字符串变量,并使用默认的 SELECT 查询对其进行分配。然后我们运行 if 语句,然后构建它,这样您就不会尝试将字符串添加到对象类型。

$query= "SELECT * FROM properties WHERE 1";

        if (!empty($sector)) { $query .= " AND sector = :sector"; }
        if (!empty($property_type))  { $query.= " AND property_type = :property_type"; }
        if (!empty($contract))  { $query .= " AND contract = :contract"; }
        if (!empty($minimum_price))  { $query .= " AND price BETWEEN :minimum_price AND :maximum_price"; }
        if (!empty($m2_from))  { $query .= " AND m2 BETWEEN :m2_from AND :m2_until"; }
        if (!empty($contract))  { $query .= " AND bedrooms = :bedrooms"; }

$paginate = new pagination($page, $query, $options);

编辑 1

此外,您的 SELECT 查询也不正确。您缺少 WHERE 子句后的列名称。

关于php - 将 WHERE if 条件插入 mysql 类查询中。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844587/

相关文章:

mysql - 查找与按字段排序的先前记录的差异

mysql - 如何按日期和型号年份过滤此 MySQL 查询?

mysql - 查找 mysql 表上存储的授权

java - 在 java 中使用 MS Excel 查找表或任何类似的解决方案

php - 无法从SQLite读取Blob数据

php - 编码线程多接收者消息传递系统的最佳实践?

java - MySQL中如何处理锁定帐户

php - 如何合并 2 个 Select 查询

php - 使用 PHP 和 MySQL 根据总分自动更新用户位置

php - 从 Codeigniter 中的数据库查询创建多维数组