0

PHP と MySQL をしばらく使用していないため、残念ながら知識を失っており、コードについて助けが必要です。

以下に、DB から 9 つの異なる値を取得するコードをいくつか示しますが、うまくいきません。また、PHP エラー メッセージがオフに設定されているため、何が問題なのかわかりません。

私は間違っているのですか、それともここで何が間違っていますか?

for (i = 0; i < 10; i ++) {
$query2 = "SELECT * from arkitekturobjekt WHERE id = '{$buildingIdArray[i]}'";
$result2 = $mysqli->query($query2);
$row = mysqli_fetch_object($result2);
// Do some stuff here
}

編集:これまでのところ助けてくれてありがとう、でもまだうまくいきません!$buildingIdArray[]配列に値を設定するための次のコードには、いくつか問題があります。

$buildingIdArray  = array();
$numbers = range (1, 40);
shuffle($numbers);
$buildingIdArray=array_slice ($numbers,1,9)

私がこのようにすればうまくいきます:

$buildingIdArray  = array(1,2,3,4,5,6,7,8,9);

何が間違っている可能性がありますか?

4

3 に答える 3

4

$iではないi:

for ($i = 0; $i < 10; $i ++) 
于 2013-06-12T17:43:32.977 に答える
4

これが私のコメントの意味です:「ID のリストを作成するだけでなく、一度クエリを実行してから結果をループするだけでなく、ループ内でクエリを実行したいですか? 例: WHERE id IN (1, 2, 4, 6 、10)」

// get the first 10 items from building array
$id_arr = array_slice($buildingIdArray, 0, 10); 

$query2 = "SELECT * from arkitekturobjekt WHERE id IN (". implode(',', $id_arr) .")";
$result2 = $mysqli->query($query2);

while($row = mysqli_fetch_object($result2))
{
  //Do some stuff here
}

ここでのサニタイズは、引き続きあなたの責任であることに注意してください。建物 ID 配列に何が入力されているかはわかりません。そのため、$_GET、$_POST、$_REQUEST、またはユーザーが生成できるその他のものからのものである場合、mysql インジェクションに対してオープンである可能性があります。

于 2013-06-12T17:52:51.567 に答える