当我在Mysql查询的if
子句中使用WHERE
条件时,我收到语法错误。例如,如果我只使用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的正确语法 限制0,30和#39;在第43行'在 E:\ xampp \ htdocs \ dolche \ admin \ class \ pagination.php:451堆栈跟踪:#0 E:\ XAMPP \ htdocs中\ dolche \ ADMIN \类\ pagination.php(451): PDOStatement-> execute()#1 E:\ xampp \ htdocs \ dolche \ admin \ search.php(190):pagination-> execute()#2 {main}抛出E:\ xampp \ htdocs \ dolche \ admin \ class \ pagination.php on 第451行
非常欢迎任何解决此问题的帮助。谢谢!
答案 0 :(得分:5)
您错过了1
和AND
之间的空格:
if (!empty($sector)) { $query .= "AND P.sector = '$sector'"; }
^^^^
HERE
有趣的是,你在其他任何地方都做对了。
答案 1 :(得分:1)
您必须在AND
之前添加空格。
尝试:
if (!empty($sector)) { $query .= " AND P.sector = '$sector'"; }
而不是
if (!empty($sector)) { $query .= "AND P.sector = '$sector'"; }
答案 2 :(得分:0)
在AND P.sector = '$sector'
从
改变if (!empty($sector)) { $query .= "AND P.sector = '$sector'"; }
要
if (!empty($sector)) { $query .= " AND P.sector = '$sector'"; }
答案 3 :(得分:0)
请给出空格:
ON O.id = P.owner WHERE 1 ";
或
if (!empty($sector)) { $query .= " AND P.sector = '$sector'"; }