一段时间的迭代 - > fetch循环不起作用

时间:2013-12-24 15:59:48

标签: php mysql arrays pdo

我有一个函数可以提取数据库中项目的详细信息,并在返回之前将其添加到数组中。目前,我正在尝试查询与该项相关的任何图像的文件路径并将其添加到数组。为此,我使用PDO运行查询,使用WHILE-> fetch循环获取文件路径然后使用$我使用每个循环更改数组键的迭代器。

问题:WHILE循环正在作为数组的var_dump显示最新的文件路径,但迭代器不工作,并且数组键未被更改。因此,图像的数组键正在用每个循环覆盖,而不是添加新的循环。

如何使用每个循环更新数组键?

功能代码(摘录):

//Additional code above
//Gets itempics
$getimg=$connection->prepare("SELECT `FilePath`,`Extension` FROM `ItemPics` WHERE `ItemID`=:itemid");
$getimg->bindValue(":itemid",$itemid);
$getimg->execute();
while($fetchimg=$getimg->fetch(PDO::FETCH_ASSOC))
{
    $i=0;
    $imgname=$fetchimg["FilePath"];
    $imgext=$fetchimg["Extension"];
    $details["img$i"]=$imgname.$imgext;
    $i+=1;
}
return $details;

var_dump结果(摘录):

["img0"]=> string(58) "..\Images\1\item\ITEMDPTEST 15\52b5d6cca8ba08.33798550.jpg" 

解决方案可能非常明显,但我似乎无法弄明白。 P.S我已经尝试将$ i + = 1更改为$ i ++,但它不能正常工作。

3 个答案:

答案 0 :(得分:2)

$i=0;移到while循环之外:

$i=0;
while($fetchimg=$getimg->fetch(PDO::FETCH_ASSOC))
{
    $imgname=$fetchimg["FilePath"];
    $imgext=$fetchimg["Extension"];
    $details["img$i"]=$imgname.$imgext;
    $i+=1;
}

答案 1 :(得分:0)

此:

$i=0; //outside the loop, first this and bellow the while loop

稍后更改:

$details["img$i"]=$imgname.$imgext;

对于这样的事情:

$details["img"][$i]=$imgname.$imgext;

最后:

var_dump($details["img"]);

答案 2 :(得分:0)

您需要在循环之前设置$i = 0

如果您只使用数字索引,它也可能更有意义(并且更自然):

$imgname = $fetchimg["FilePath"];
$imgext = $fetchimg["Extension"];
$details[] = $imgname.$imgext;