【问题标题】:Nested While Loop PHP嵌套 While 循环 PHP
【发布时间】:2017-06-21 11:06:23
【问题描述】:

我需要有关循环 MySQL 数据的帮助。

我有如下的库存表。

我想做的是执行一个 select 语句,该语句将从 stock 表中获取所有行,如果它的“numberassigned_vnr”大于 1,则循环遍历该语句并将其显示为单独的行。

我在编写 select 语句时需要帮助,该语句将循环遍历表并显示结果,如果“numberassigned_vnr”不止一个,则循环遍历并将结果打印到该次数。

所以我应该看到这样的东西。

1   27  300  Black
1   27  300  Black
1   27  300  Black
7   29  315  Black
7   29  315  Black
2   28  315  Black
3   29  315  Black
......
.....

提前谢谢你。

【问题讨论】:

  • 我投票决定将此问题作为题外话结束,因为您应该阅读精美的手册:php.net/manual/en/control-structures.foreach.php
  • 您要求重复记录。 .我认为你应该只用 php 进行所需的循环
  • 是复制记录。第二个循环将查找“numberassigned_vnr”值,如果它超过一个;它应该将该记录复制到该次数。
  • @MuhammadIkram 所以你想在mysql级别复制记录,还是在php中复制?

标签: php loops mysqli


【解决方案1】:

PHP:

while($row=mysqli_fetch_array($result,MYSQL_ASSOC)){ $numberassigned_vnr=$row['numberassigned_vnr']; for($i=1;$i<=$numberassigned_vnr;$i++){ echo "your coloumns here like $row[coloumn1] $row[coloumn2]..."; } }

希望对你有帮助

【讨论】:

    【解决方案2】:

    你可以这样做

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }
    
        $sql = "SELECT id, firstname, lastname FROM MyGuests";
        $result = $conn->query($sql);
        if (!empty($result)) {
            foreach ($result as $data) {
                for ($i = 0; $i < $data->numberassigned_vnr; $i++) {
                    echo "$data->id_vnr $data->idstk_vnr $data->width_vnr $data->color_vnr ";
                }
            }
        }
    

    我觉得它对你有用。

    【讨论】:

      【解决方案3】:

      如果您询问是否根据“numberassigned_vnr”多次打印该行,解决方法如下:

      // $conn = your db connection
      
      $result = mysqli_query($conn,"SELECT * FROM your_table");
      
      if(!empty($result)) {
          while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
      
              for($i=0; $i < $row['numberassigned_vnr']; $i++){
                  echo $row['id_vnr']." ".$row['idstk_vnr']." ".$row['width_vnr']." ".$row['color_vnr'];
              }
          }
      
          // Free result set
          mysqli_free_result($result);
      }
      
      mysqli_close($conn);
      

      【讨论】:

        【解决方案4】:

        MySQL 语句上使用PDOWHERE 句柄,得到numberassigned_vnr &gt; 1 的所有结果。

        如下:

        $db = new PDO("...");
        $statement = $db->prepare("SELECT * FROM stock_table WHERE numberassigned_vnr > :nrassigned");
        $statement->execute(array(':nrassigned' => 1));    
        while ($row = $statement->fetchAll(PDO::FETCH_ASSOC)){
            var_dump($row); // var_dump complete row
            echo $row['id_vnr'] . " " . $row['idstk_vnr'] . " " . $row['width_vnr'] . " " . $row['color_vnr'];
        } 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-11
          • 2013-05-11
          • 1970-01-01
          • 2012-06-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多