您好,我如何转换以下查询,这样我就不会出现错误:可捕获的 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/