【问题标题】:Weird incremented query result in a while一段时间内奇怪的递增查询结果
【发布时间】:2013-04-08 23:52:14
【问题描述】:

我不明白为什么 '$taille' 数组的结果从键 [1] 而不是键 [0] 开始?
所以它显示的是 3 个结果而不是 4 个(隐藏第一个结果) ...

<?php 
$req = $bdd->prepare('SELECT size FROM tailles_produits WHERE id_produit = ?');
$req->execute(array($_GET['id']));
$donnees = $req->fetch();

$numb_taille = array();
$taille = array();
$i = 0;
while($donnees = $req->fetch())
{
    $i++;
    $taille[$i] = $donnees['size'];
    $numb_taille['total'] = $i;
}
$total = $numb_taille['total'];

echo '<pre>';
print_r ($taille);
echo '</pre>';

$req->closeCursor();
?>

这给了

ARRAY
(
    [1] => S
    [2] => M
    [3] => L
)

代替

ARRAY
(
    [1] => XS
    [2] => S
    [3] => M
    [4] => L
)

谁能帮我解决这个请求?

【问题讨论】:

    标签: php sql while-loop increment


    【解决方案1】:

    PHP 数组从 0 开始,因此您只需将 i++ 向下移动,直到使用完该索引中的数据后

    <?php 
    $req = $bdd->prepare('SELECT size FROM tailles_produits WHERE id_produit = ?');
    $req->execute(array($_GET['id']));
    $donnees = $req->fetch();
    
    $numb_taille = array();
    $taille = array();
    $i = 0;
    while($donnees = $req->fetch())
    {
        $taille[$i] = $donnees['size'];
        $numb_taille['total'] = $i;
        $i++; //iterate after your calculations are done
    }
    $total = $numb_taille['total'];
    
    echo '<pre>';
    print_r ($taille);
    echo '</pre>';
    
    $req->closeCursor();
    ?>
    

    【讨论】:

    • 也感谢您的快速回答。它可以工作,但它仍然只显示 3 个结果,即使它从键 [0] 开始...?
    • @Decay 您的 while 循环应该将 i 与查询中的记录数进行比较
    • 看来我调用了“$donnees = $req -> fetch();”两次。
      我刚刚删除了第一个电话。
    【解决方案2】:

    问题是你有多余的

    $donnees = $req->fetch();
    

    填充$taille的循环之前的语句。所以第一行的数据正在被获取,但没有存储在数组中。

    【讨论】:

    • 是的!我没有及时看到你的答案,但我也找到了答案。非常感谢。
    • 您接受了一个答案,这是最接近“已解决”的 SO。
    【解决方案3】:

    这是因为您在将 $i 用作新数组项的键之前增加了它。

    在 while 循环结束时进行增量。

    【讨论】:

    • 感谢您的快速回答,现在它从键 [0] 开始运行,但无论如何它只显示 3 个结果...?
    猜你喜欢
    • 2018-09-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2020-05-11
    相关资源
    最近更新 更多