我已经开始学习PHP,但在个人项目中我无法解决这个问题:
我在MySQL中有一个包含多行的表:
$sql = "SELECT * FROM posts";
$query = mysqli_query($db_conx, $sql);
表格如下所示:
id header content
-------------------------
10 test3 <p>test</p>
9 test2 <p>test</p>
8 test <p>test</p>
但是当我运行此代码时:
if($query) {
$row = mysqli_fetch_row($query);
for($i; $i < count($row); $i++){
echo $row[$i] . " ";
}
}
它只选择第一行而忽略其他行。
理想输出的数组如下:
$dataArray[0][0] = "10"
$dataArray[0][1] = "test3"
$dataArray[0][2] = "<p>test</p>"
$dataArray[1][0] = "9"
$dataArray[1][1] = "test2"
$dataArray[1][2] = "<p>test</p>"
$dataArray[2][0] = "8"
$dataArray[2][1] = "test"
$dataArray[2][2] = "<p>test</p>"
etc;
你可以帮我解决这个问题,请向我解释一下吗?
PS:对不起我的英语,这不是我的母语。
解决方案:
我使用了MaggsWeb的解决方案:
if($query) {
while($row = mysqli_fetch_assoc($query)){
echo $row['header'];
echo $row['content'];
}
}
但我将其更改为以下内容以使其完整且单个数组:
$index = 0;
$data = array();
if($query) {
while($row = mysqli_fetch_assoc($query)){
$data[$index][0] = $row['id'];
$data[$index][1] = $row['header'];
$data[$index][2] = $row['content'];
$index++;
}
}
答案 0 :(得分:1)
在while
功能中使用myslqi_fetch_row()
循环。
if($query) {
while($row = mysqli_fetch_row($query)){
echo $row[0] . " ";
echo $row[1] . " ";
}
}
您可能会发现使用mysqli_fetch_assoc()
更容易,因此您可以使用列名访问数据。
if($query) {
while($row = mysqli_fetch_assoc($query)){
echo $row['header'];
echo $row['content'];
}
}
答案 1 :(得分:0)
您需要以这种方式更改查询,
$sql = "SELECT * FROM posts";
$result = mysqli_query($db_conx, $sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row['id'].' '. $row['header'].' '. $row['content']. "<br>";
}
}