1

我想获取数组的元素,并使用 PHP 将其放入 MySQL 查询,如下所示:

$ArrayOne = {3, 5, 8, 2};
$sql = SELECT * from myTable WHERE id1='3' and id2='5' and id3='8' and id4='2';

我这样做,但它失败了:

for ($i=0; $i<count($ArrayOne); $i++) {
  $element.$i = $ArrayOne[$i];
}
  $sql = ("SELECT * from myTable WHERE id1=". $element.$i ." and id2=". $element.$i ." and id3=". $element.$i ." and id4=". $element.$i .");

我认为$element.$i具有相同的值,但我不知道如何获得 Array 元素的不同值。如果我这样做,那也是错误的。

for ($i=0; $i<count($ArrayOne); $i++) {
  $element.$i = $ArrayOne[$i];    
  $sql = ("SELECT * from myTable WHERE id1=". $element.$i ." and id2=". $element.$i ." and id3=". $element.$i ." and id4=". $element.$i .");
}

任何机构都可以提供解决方案吗?

4

2 回答 2

2

尝试这个:

$count = count($ArrayOne);
for($i=0; $i<$count; $i++){
    $where_arr[$i] = 'id'.$i.'='.$ArrayOne[$i];
}

$sql = "select * from myTable where ".implode(" and ",$where_arr);
于 2013-09-09T01:17:10.110 回答
1

您的代码中有几个错误

第一个是:

$ArrayOne = {3, 5, 8, 2};

应该:

$ArrayOne = array(3, 5, 8, 2);

第二个错误,您的$sql变量没有包含在引号之间应该是$sql="your query";

如果您的数组具有固定长度,则不需要使用循环:

$ArrayOne = array(3, 5, 8, 2);

 $sql =  "SELECT     * 
     from       myTable 
     WHERE      id1='$ArrayOne[0]'
     and        id2='$ArrayOne[1]'
     and        id3='$ArrayOne[2]'
     and        id4='$ArrayOne[3]'";

对于可变长度的数组,您可以使用@Nightmare 的答案

作为旁注:

阅读有关SQL 注入的信息

你应该学习 PDO,如果你开始学习 php,那就用正确的方式去做吧

手动的

于 2013-09-09T01:26:40.663 回答