【问题标题】:mysqli_fetch_array while loop columnsmysqli_fetch_array while 循环列
【发布时间】:2013-01-22 10:34:57
【问题描述】:

应该很基本,但我无法让它工作。我有这段代码可以遍历 mysqli 查询:

while($row = mysqli_fetch_array($result)) {
    $posts[] = $row['post_id'].$row['post_title'].$row['content'];
}

它工作并返回:

变量 #1:(数组,3 个元素)↵ 0(字符串):“4testtest”(9 个字符) 1(字符串):“1Hello world!欢迎来到 WordPress。这是您的第一篇文章。编辑或删除它,然后开始写博客!” (99 个字符) 2(字符串):“2Sample Page这是一个示例页面。它与博客文章不同,因为它会留在一个地方并显示在 您的网站导航(在大多数主题中)。”(161 个字符)

问题在于它将所有三个列放在一列中,因此我无法单独访问它们。

例如:

0(字符串):“4testtest”(9 个字符)

应该分成4,测试,测试

当我这样做时:

while($row = mysqli_fetch_array($result)) {             
    $posts['post_id'] = $row['post_id'];
    $posts['post_title'] = $row['post_title'];
    $posts['type'] = $row['type'];
    $posts['author'] = $row['author'];  
}   

它只输出 1 行而不是全部 3 行……

非常感谢任何帮助!

【问题讨论】:

标签: php mysqli while-loop multiple-columns


【解决方案1】:

从 MySQL 中获取所有值:

    $post = array();
    while($row = mysql_fetch_assoc($result))
    {
        $posts[] = $row;
    }

然后,获取每个值:

<?php 
     foreach ($posts as $row) 
        { 
            foreach ($row as $element)
            {
                echo $element."<br>";
            }
        }
?>

回显这些值。或者从 $post 变量中获取每个元素

【讨论】:

  • 虽然您的代码最接近正确的代码,但您确实需要在命名上更加一致......
  • 问题是针对 MYSQLI - php7 vs php5
【解决方案2】:

这个是你的解决方案。

$x = 0;
while($row = mysqli_fetch_array($result)) {             
    $posts[$x]['post_id'] = $row['post_id'];
    $posts[$x]['post_title'] = $row['post_title'];
    $posts[$x]['type'] = $row['type'];
    $posts[$x]['author'] = $row['author'];
    $x++;
}

【讨论】:

    【解决方案3】:

    我认为这将是一种更简单的输出结果的方式。

    对不起,使用我自己的数据应该很容易替换。

    $query = "SELECT * FROM category ";
    
    $result = mysqli_query($connection, $query);
    
    
        while($row = mysqli_fetch_assoc($result))
        {
            $cat_id = $row['cat_id'];
            $cat_title = $row['cat_title'];
    
            echo $cat_id . " " . $cat_title  ."<br>";
        }
    

    这将输出:

    • -ID 标题
    • -1 加里
    • -2 约翰
    • -3 迈克尔斯

    【讨论】:

      【解决方案4】:

      两者都可以在 mysqli_fetch_array 在 while 循环中完美运行

      while($row = mysqli_fetch_array($result,MYSQLI_BOTH)) {
          $posts[] = $row['post_id'].$row['post_title'].$row['content'];
      }
      

      (或)

      while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
          $posts[] = $row['post_id'].$row['post_title'].$row['content'];
      }
      

      mysqli_fetch_array() - 有第二个参数 $resulttype。

      MYSQLI_ASSOC:获取关联数组

      MYSQLI_NUM:获取数值数组

      MYSQLI_BOTH:同时获取关联数组和数值数组。

      【讨论】:

      • 这是一个实时示例,它在上述代码中运行良好,那么为什么你被给予负面评价。如果您使用了上面的代码并且任何失败都意味着只是报告了我,这就是原因并给出了否定。
      【解决方案5】:

      试试这个:

         $i = 0;    
          while($row = mysqli_fetch_array($result)) {  
      
                  $posts['post_id'] = $row[$i]['post_id'];
                  $posts['post_title'] = $row[$i]['post_title'];
                  $posts['type'] = $row[$i]['type'];
                  $posts['author'] = $row[$i]['author'];  
      
              }   
          $i++;
          }
      
      print_r($posts);
      

      【讨论】:

        【解决方案6】:

        试试这个...

        while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        

        【讨论】:

        • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
        • @Parixit 看起来像我的答案?不确定它是否正确,但这对审查并不重要。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-03
        • 2014-01-06
        • 2017-04-01
        • 2016-04-06
        • 2016-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多