0

这是我的数组:

array (size=2)
  100 => 
    array (size=2)
      'trade' => int 5
      'gold' => int 10
  101 => 
    array (size=2)
      'trade' => int 10
      'gold' => int 20

数组的键是我想在查询中运行的用户的 ID。我发现我可能需要使用 IN,例如:

    SELECT * FROM `users` WHERE `id` IN (:id)

(:id 在脚本中被 $id 替换)

现在当我做

     SELECT * FROM `users` WHERE `id` IN (100,105)

(出于测试目的)它有效。

虽然它需要准备所以当我设置

$id = 100,101; 

或者

$id = ‘100,101’; 

它只显示 100 条记录。

有任何想法吗?谢谢

4

2 回答 2

0

他们都错了你所做的$id = 100,101;$id = ‘100,101’; 试试这个

  $id = "100,101";

或这个

  $id = '100,101';

甚至也可以这样做

    $id = 100;
    $id .= ",";
    $id .= 101 ;
于 2012-11-30T09:51:51.400 回答
0

您可以使用implodearray_keys

"SELECT * FROM `users` WHERE `id` IN (" . implode(",", array_keys($array)) . ")"

您可以通过使用 / 手动指定数组来测试:

$array = array(
    100 => array(
        'trade' => 5,
        'gold' => 10,
    ),
    101 => array(
        'trade' => 10,
        'gold' => 20,
    )
);

$sql = "SELECT * FROM `users` WHERE `id` IN (" . implode(",", array_keys($array)) . ")";
$result = mysqli_query($sql);

while($row = mysqli_fetch_assoc($result)){
    var_dump($row);
}

它已经过实际测试并且有效。

于 2012-11-30T09:37:45.463 回答