PHP - 从MySQL中选择多行

时间:2015-08-31 18:58:09

标签: php mysql mysqli

我已经开始学习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++;
    }
}

2 个答案:

答案 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>";
}
}