【发布时间】:2015-08-06 13:01:47
【问题描述】:
当我在 Mysql 查询的 WHERE 子句中使用 if 条件时出现语法错误。例如,如果我只输入WHERE 1 和sector = 2 这样的条件,它就可以工作。但是当我设置if 条件时,它不再起作用了。
$query= "SELECT
P.id
,P.price
,P.contract
,P.property_type
,P.sector
,P.title
,P.address
,P.bedrooms
,P.bathrooms
,P.price
,P.m2
,P.text_english
,P.photo_01
,P.utilities
,P.google_maps
,P.date
,CT.id
,CT.english_text
,PT.id
,PT.english
,C.cityname
,S.sectorname
,S.id
,O.ownername
,O.phone_one
,O.phone_two
,O.email
,O.notes
FROM properties P
JOIN contract CT
ON CT.id = P.contract
JOIN property_type PT
ON PT.id = P.property_type
JOIN city C
ON C.id = P.city
JOIN sector S
ON S.id = P.sector
JOIN owner O
ON O.id = P.owner WHERE 1";
if (!empty($sector)) { $query .= "AND P.sector = '$sector'"; }
if (!empty($property_type)) { $query .= " AND P.property_type = '$property_type'"; }
if (!empty($contract)) { $query .= " AND P.contract = '$contract'"; }
if (!empty($minimum_price)) { $query .= " AND P.price BETWEEN '$minimum_price' AND '$maximum_price'"; }
if (!empty($m2_from)) { $query .= " AND P.m2 BETWEEN '$m2_from' AND '$m2_until'"; }
if (!empty($bedrooms)) { $query .= " AND P.bedrooms = '$bedrooms'"; }
这是错误:
致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE[42000]: 语法错误或访问冲突:1064 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在 'P.sector = 2 附近使用正确的语法 LIMIT 0, 30' at line 43' in E:\xampp\htdocs\dolche\admin\class\pagination.php:451 堆栈跟踪:#0 E:\xampp\htdocs\dolche\admin\class\pagination.php(451): PDOStatement->execute() #1 E:\xampp\htdocs\dolche\admin\search.php(190): 分页->执行() #2 {main} 在 E:\xampp\htdocs\dolche\admin\class\pagination.php 中抛出 第 451 行
非常欢迎任何解决此问题的帮助。谢谢!
【问题讨论】:
标签: php mysql pdo mysql-error-1064