Php 在WHERE子句中使用if条件时出现MySQL语法错误

Php 在WHERE子句中使用if条件时出现MySQL语法错误,php,mysql,pdo,mysql-error-1064,Php,Mysql,Pdo,Mysql Error 1064,在Mysql查询的WHERE子句中使用if条件时,出现语法错误。例如,如果我在其中输入1,并且只有扇形=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_en

在Mysql查询的WHERE子句中使用if条件时,出现语法错误。例如,如果我在其中输入1,并且只有扇形=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'位于第43'行中 E:\xampp\htdocs\dolche\admin\class\pagination.php:451堆栈跟踪:0 E:\xampp\htdocs\dolche\admin\class\pagination.php451: PDO语句->执行1 E:\xampp\htdocs\dolche\admin\search.php190:分页->执行2 {main}在上的E:\xampp\htdocs\dolche\admin\class\pagination.php中抛出 第451行


任何解决这个问题的帮助都是非常受欢迎的。谢谢

缺少介于1和之间的空格:


有趣的是,你在其他地方都做对了

缺少介于1和之间的空格:


有趣的是,你在其他地方都做对了

您必须在和之前添加一个空格

尝试:

而不是

if (!empty($sector)) { $query .= "AND P.sector = '$sector'"; }

您必须在和之前添加一个空格

尝试:

而不是

if (!empty($sector)) { $query .= "AND P.sector = '$sector'"; }
在前面添加空格,p.sector='$sector'

if (!empty($sector)) { $query .= "AND P.sector = '$sector'"; }

在前面添加空格,p.sector='$sector'

if (!empty($sector)) { $query .= "AND P.sector = '$sector'"; }


请提供以下任一空间:

ON O.id = P.owner WHERE 1 ";


请提供以下任一空间:

ON O.id = P.owner WHERE 1 ";

if (!empty($sector)) { $query .= " AND P.sector = '$sector'"; }