在SQL WHERE子句中使用php数组时出现问题


Trouble with using a php array in SQL WHERE clause

我的php页面中有一条sql语句,看起来如下:

 $places=array('CHI','DET','LA','NYC','DALLAS');
$SQL="SELECT NAME,
             ID,
             PHONE,
             EMAIL,
             LOCATION
      FROM SHOPPERS
      WHERE LOCATION IN '{$places}'
      AND ID BETWEEN '25687' AND '28050'
      ";

然后,我将查询作为一个表进行回显,但没有得到任何结果,因为$places数组有问题。如有任何帮助,我们将不胜感激。感谢

您需要将其格式化为与SQL期望的内容友好:

$places=array('CHI','DET','LA','NYC','DALLAS');
$SQL="SELECT NAME,
             ID,
             PHONE,
             EMAIL,
             LOCATION
      FROM SHOPPERS
      WHERE LOCATION IN ('".implode("', '", $places)."')
      AND ID BETWEEN '25687' AND '28050'
      ";

SQL where column in子句需要在它们周围加括号,因此需要将它们添加进去,然后仍然需要将数组内爆为字符串。构造的SQL应该是这样的:

$SQL="SELECT NAME,
             ID,
             PHONE,
             EMAIL,
             LOCATION
      FROM SHOPPERS
      WHERE LOCATION IN ('CHI','DET','LA','NYC','DALLAS')
      AND ID BETWEEN '25687' AND '28050'
      ";