Php Where子句中的数组
如何将数组插入where子句?这是获取ID的第一个查询:Php Where子句中的数组,php,mysql,arrays,where,Php,Mysql,Arrays,Where,如何将数组插入where子句?这是获取ID的第一个查询: $query = "SELECT id FROM #_categories WHERE alias = 'agenda'"; $result = mysql_query($query) or die(mysql_error()); while($linha = mysql_fetch_array($result)){ $vNome = $linha['id']; } 现在执行第二个查询以获得最终结果: $query = "
$query = "SELECT id FROM #_categories WHERE alias = 'agenda'";
$result = mysql_query($query) or die(mysql_error());
while($linha = mysql_fetch_array($result)){
$vNome = $linha['id'];
}
现在执行第二个查询以获得最终结果:
$query = "SELECT introtext FROM $tabela WHERE catid IN ($vNome) <> ''";
结果是:
SELECT introtext FROM #_content WHERE catid IN (36) <> ''
为什么我不能把子句中的所有ID都放进去
PS:很抱歉英语不好,这不是我的母语。将循环更改为此
$vNome = array();
$i = 0;
while($linha = mysql_fetch_array($result)){
$vNome[$i] = $linha['id'];
$i++;
}
然后使用这个$vNome数组
$vNome=array();
$result = mysql_query($query) or die(mysql_error());
while($linha = mysql_fetch_array($result)){
$vNome[] = $linha['id'];
}
然后sql:
$query = "SELECT introtext FROM $tabela WHERE catid IN (".implode(",",$vNome).")";
IN是一个SQL关键字。不能将原始PHP数组传递给SQL
必须首先将数据读入数组,然后展开数组:
$query = "SELECT id FROM #_categories WHERE alias = 'agenda'";
$result = mysql_query($query) or die(mysql_error());
$vNome = array();
while($linha = mysql_fetch_array($result)) {
$vNome[] = $linha['id']; // don't forget the [] to put it into an array, else the value will be scalar!
}
$query = "SELECT introtext FROM $tabela WHERE catid IN (".implode(",", $vNome).")";
$vNome不是数组。在while子句中,您只是覆盖了变量。在while之前,初始化变量
$vNome = array();
然后在这段时间内,将其更改为
$vNome[] = $linha['id'];
现在,当涉及到第二个查询时,不能只传入数组,而必须对其进行内爆
$vNomeStr = implode (',',$vNome);
然后可以在查询中使用$vNomeStr。只要是数字,这就可以正常工作,否则您还必须将每个项都封装在引号中。您是否尝试过这样的嵌套select语句:
SELECT introtext
FROM $tabela
WHERE catid
IN (
SELECT id
FROM #_categories
WHERE alias = 'agenda'
);
可能有更有效的方法,但这应该是可行的。将数组内插为逗号分隔的字符串将使您有机会在中使用1,2,3字符串。。。操作员工作了!非常感谢你!