无法使用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 <a
href='#'>edit</a> • <a href='#'>delete</a>
<br/>";
}
} else {
$product_list = "You have no products listed in your store yet";
}
?>
<?php echo $product_list; ?>
答案 0 :(得分:1)
您在每个循环中覆盖$ product_list。
您必须通过concat运算符.=
$product_list .= "$id - $product_name <a href='#'>edit</a> • <a href='#'>delete</a> <br/>";
答案 1 :(得分:0)
好的,这个答案可能不是您正在寻找的,但我只使用mySQLi而不是旧版本。我只会使用更新的语法重写您的代码,因为我知道这会起作用。所以这里是
<?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 <a
href='#'>edit</a> • <a href='#'>delete</a>
<br/>";
}
} else {
$product_list = "You have no products listed in your store yet";
}
?>
&#13;
您需要在mySQLi面向对象方法中添加$conn = new mysqli($server, $username, $password, $database);
,或者可以使用现有方法替换$conn
行上的$sql = $conn->query("SELECT * FROM products");
,这应该可行。