数组到逗号分隔的字符串
Array to comma separated strings
这是代码(我使用的是 Codeigniter):
$sql = 'SELECT * FROM foo WHERE bar IN (?)';
$query = $this->db->query($sql, array($values));
所以 $values 是我想在 SQL 语句中添加的字符串数组,其中“?”是。当我尝试这个时,我得到一个 "Array to string conversion" 错误。有什么办法可以将 $values 数组的值作为逗号分隔的字符串添加到 SQL 语句中吗?
您应该在查询中传递以逗号分隔的字符串。为此使用 php.
的 implode
函数
这样做:
$values = array('bar1', 'bar2', 'bar3');
$string = "'".implode("',", $values)."'";
然后在查询中传递字符串,
$sql = 'SELECT * FROM foo WHERE bar IN ($string)';
$query = $this->db->query($sql);
echo '<pre>'; print_r($query->result_array());
您将在 $query 变量中获取数据。
如有需要,请联系我以获取进一步帮助。
你为什么不使用简单的 codeigniter 方式
$this->db->from('foo');
$this->db->where_in('bar',$values);
$query=$this->db->get();
这将产生您想要的结果
更新
如果您对自己的方式很严格,则需要以这种方式生成 $sql
$sql = 'SELECT * FROM foo';
if(is_array($values)&&sizeof($values)>0)
{
$sql.=' WHERE bar IN (';
foreach($values as $key=>$value)
{
if($key==0)
{
$sql.='?';
}
else
{
$sql.=',?';
}
}
$sql.=')';
}
$query=$this->db->query($sql,$values);
这是代码(我使用的是 Codeigniter):
$sql = 'SELECT * FROM foo WHERE bar IN (?)';
$query = $this->db->query($sql, array($values));
所以 $values 是我想在 SQL 语句中添加的字符串数组,其中“?”是。当我尝试这个时,我得到一个 "Array to string conversion" 错误。有什么办法可以将 $values 数组的值作为逗号分隔的字符串添加到 SQL 语句中吗?
您应该在查询中传递以逗号分隔的字符串。为此使用 php.
的implode
函数
这样做:
$values = array('bar1', 'bar2', 'bar3');
$string = "'".implode("',", $values)."'";
然后在查询中传递字符串,
$sql = 'SELECT * FROM foo WHERE bar IN ($string)';
$query = $this->db->query($sql);
echo '<pre>'; print_r($query->result_array());
您将在 $query 变量中获取数据。
如有需要,请联系我以获取进一步帮助。
你为什么不使用简单的 codeigniter 方式
$this->db->from('foo');
$this->db->where_in('bar',$values);
$query=$this->db->get();
这将产生您想要的结果
更新
如果您对自己的方式很严格,则需要以这种方式生成 $sql
$sql = 'SELECT * FROM foo';
if(is_array($values)&&sizeof($values)>0)
{
$sql.=' WHERE bar IN (';
foreach($values as $key=>$value)
{
if($key==0)
{
$sql.='?';
}
else
{
$sql.=',?';
}
}
$sql.=')';
}
$query=$this->db->query($sql,$values);