循环MySQL结果

时间:2013-06-12 17:42:39

标签: php mysql

我已经有一段时间没有使用过PHP和MySQL了,所以我遗憾地失去了一些知识,我需要一些代码帮助。

下面我有一些代码可以从数据库中获取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);

可能出现什么问题?

3 个答案:

答案 0 :(得分:4)

$i不是i

for ($i = 0; $i < 10; $i ++) 

答案 1 :(得分:4)

这就是我的评论意思:&#34;你确定要在循环中查询而不只是撰写一个id列表,查询一次,然后循环结果?示例:WHERE id IN(1,2,4,6,10)&#34;

// 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注入

答案 2 :(得分:1)

您不应在for循环中运行查询。

使用循环构建查询,然后只运行一个。

// prepare the where conditions
$where2 = Array();
for($i = 0; $i < 10; $i ++) {
  $where2[] = "`id` = '" . $buildingIdArray[$i] . "'";
}

// put the query and the conditions together
$query2 = "SELECT * FROM `arkitekturobjekt` WHERE " . implode(' OR ', $where2) . ";";

// run the query and loop results
$result2 = $mysqli->query($query2);
while($row = mysqli_fetch_object($result2)) {
  // do stuff with the results here
}