为什么array()中的硬编码文本可以工作但与var不同的文本:array($ var)

时间:2013-11-11 00:11:41

标签: php

有时候试图弄清楚正确的问题是最困难的部分。

我想运行一个查询,检查数据列中可能出现的几种可能性

这段代码就像我想要的那样:

$states = array('CA','CO','TX');
$states_str = implode("','",$states);

$query="SELECT * FROM table1 WHERE state IN ('$states_str')";

但问题是数组变量是硬连线的

我希望用户选择他们想要的状态(在这种情况下),将它们收集到变量中,然后将该变量放在array()中以获得相同的结果

$var = ('CA','CO','TX')
$states = array($var);
$states_str = implode("','",$states);

$query="SELECT * FROM table1 WHERE state IN ('$states_str')";

但由于某些原因即使字符串完全相同也不会起作用。

1 个答案:

答案 0 :(得分:0)

$var已经是一个数组,所以将它包裹在另一个array()周围会使它成为一个多维数组,例如

Array(
    [0] => Array(
      [0] => 'CA',
      [1] => 'CO',
      [2] => 'TX'
    )

IOW不要将值包装在数组中,因为它已经是一个数组。或者,如果按照您的方式保留它,请使用implode("','",$states[0]);