如何使用while循环显示mysql_fetch_array的所有行

时间:2017-03-18 18:07:56

标签: php mysql database

无法使用while循环显示mysql_fetch_array的所有行。

您好。我的问题是我只能显示输入数据库表的最后一行。 我正在使用php解析表单数据以插入到数据库表中。 我知道表单数据正在插入表中。 我正在使用while循环来尝试从表的所有行中的两列中提取数据。 我使用php来显示两列id&的数据。每行product_name。 据我所知,mysql_fetch_array只会返回1行,除非它与while循环一起使用,然后返回所有行。所以我很困惑,为什么我只能排出最后一行。

当我在phpMyAdmin中浏览表时,有三行,每行都有一个id号。 它们按顺序1,2,3排序,因为id列是自动递增的。 id列是主键。 product_name列是唯一键。

我认为我的查询结构没有问题。 可能是定义$ product_list变量的问题?我不知道。

我已关闭浏览器并清除所有历史记录,Cookie等。 我已经停止&重启Apache服务器& MySQL的。

当我回显var_dump($ sql);我得到:资源(6)的类型(mysql结果)。 当我回显var_dump($ product_list);我得到:字符串(99)“3 - 蓝色牛仔裤编辑•删除” 当我print_r($ sqL);我得到:资源ID#6 当我回显$ product_list;我得到:3 - 蓝色牛仔裤编辑•删除

我花了很多时间通过谷歌搜索搜索答案,但似乎没有人适合这个特殊问题。

我确实看到一个类似的问题建议使用连接方法,但是有零(0)向上投票。所以我不确定这是否可以解决我的问题。

以下是我正在使用的代码:

<?php
    //this block grabs the whole list for viewing 
    $product_list = "";
    $sql= mysql_query ("SELECT * FROM `products`");
    $product_count = mysql_num_rows ($sql);
    if ($product_count > 0) {
        while($row = mysql_fetch_array ($sql)) {
            $id = $row['id'];
            $product_name = $row ['product_name'];
            $product_list = "$id - $product_name &nbsp; &nbsp; &nbsp; <a               
            href='#'>edit</a> &nbsp; &bull; <a href='#'>delete</a>  
            <br/>";

        }
    } else {
        $product_list = "You have no products listed in your store yet";
    }
    ?>

    <?php echo $product_list; ?> 

2 个答案:

答案 0 :(得分:1)

您在每个循环中覆盖$ product_list。

您必须通过concat运算符.=

进行连接

$product_list .= "$id - $product_name &nbsp; &nbsp; &nbsp; <a href='#'>edit</a> &nbsp; &bull; <a href='#'>delete</a> <br/>";

答案 1 :(得分:0)

好的,这个答案可能不是您正在寻找的,但我只使用mySQLi而不是旧版本。我只会使用更新的语法重写您的代码,因为我知道这会起作用。所以这里是

&#13;
&#13;
<?php
  $conn = new mysqli($server, $username, $password, $database);
  $product_list = "";
  $sql = $conn->query("SELECT * FROM products");
  $product_count = mysqli_num_rows ($sql);
  if ($product_count > 0) {
        while($row = $sql->fetch_assoc()) {
            $id = $row['id'];
            $product_name = $row ['product_name'];
            $product_list = "$id - $product_name &nbsp; &nbsp; &nbsp; <a               
            href='#'>edit</a> &nbsp; &bull; <a href='#'>delete</a>  
            <br/>";

        }
    } else {
        $product_list = "You have no products listed in your store yet";
    }
  ?>
&#13;
&#13;
&#13;

您需要在mySQLi面向对象方法中添加$conn = new mysqli($server, $username, $password, $database);,或者可以使用现有方法替换$conn行上的$sql = $conn->query("SELECT * FROM products");,这应该可行。