【问题标题】:Pick a row with a specific index in a foreach loop在 foreach 循环中选择具有特定索引的行
【发布时间】:2017-11-27 13:43:02
【问题描述】:

我想输出特定 productid 的所有图像文件。为第 1 行、第 2 行、第 3 行等输出图像路径的正确语法是什么?我找不到它了。

            $sql = "SELECT *
                    FROM images
                    WHERE productid = $productid"; 

            $select = $db->prepare($sql);
            $select->execute(array());      


        foreach($select as $index => $rs) {

        if($rs['imagepath']){
             if($index == 0){
               echo $imagepath[0];  // <---What is the right sytax of this?
           }
        }

       if($rs['imagepath']){
            if($index == 1){
                echo $imagepath[1]; // <---and this?
           }
       }

      if($rs['imagepath']){
            if($index == 3){
                echo $imagepath[2]; // <---and this?
           }
       }

【问题讨论】:

  • echo $rs['imagepath']; ?
  • 列名。
  • 语法是这样的
  • WHERE productid = productid 将选择所有行。为什么不直接省略WHERE 子句?
  • 看看我的更新

标签: php mysql pdo foreach


【解决方案1】:

foreach 循环的全部意义在于它通过每个选择作为“索引”进行一次。所以你不必担心为每个可能的行创建一个 if 语句,只需创建一次语句,它会在每次迭代中发生

【讨论】:

  • 我想自己挑行数。这就是为什么我做了一个 if 声明。我不希望输出所有内容。我只想输出选定的。我找不到它...... :(
  • 你在问 $imagepath 的正确语法是什么,你能说明 $imagepath 是什么吗?
  • 它是 $rs['imagepath']。
【解决方案2】:
$rows = [];

            $sql = "SELECT *
                    FROM images
                    WHERE productid = productid"; 

            $select = $db->prepare($sql);
            $select->execute(array());      


        foreach($select as $index => $rs) {
        $rows []= $rs;

       }
                echo $rows[0]['imagepath'];

【讨论】:

  • 我想自己挑行数。这就是为什么我做了一个 if 声明。我不希望输出所有内容。我只想输出选定的。而且您的代码不是那么有用... :(
  • 这看起来非常接近我想要的。但是这次你的代码也不起作用。
  • 此代码有效,因此图像路径不是您的列名,或者您在其他地方遇到了不同的问题
  • 'echo' 可以在 foreach 循环中吗?我把它放在循环里面。但其他一切都一样。
  • 取决于您如何订购它们。
【解决方案3】:

我们不是缺少 fetch 功能吗? `

$select = $db->prepare($sql);
$select->execute(array());      

$i = 0;
while($row = $select->fetch()) {
   echo $i . ' '. $row['imagepath'] . '<br>';
   $i++;
}

?> `

-- 附录: 我现在了解到您只想显示一个或一些图像。 那么,只选择那个/那些图像不是更容易吗?

SELECT imagepath FROM images WHERE productid = productid AND someid = 3

或者如果不存在“someid”:

SELECT imagepath FROM images WHERE productid = productid LIMIT 2,1

这将避免循环遍历可能是 100 条记录以仅使用第 3 条的需要。

【讨论】:

  • 这很好,但我想自己选择行号。像 $row['imagepath'][0]、$row['imagepath'][1] 等
  • 我想自己挑行数。这就是为什么我做了一个 if 声明。我不希望输出所有内容。我只想输出选定的。而且您的代码对我来说不是很有用.. :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 2011-03-14
  • 1970-01-01
相关资源
最近更新 更多