从MySQL DB中的最后五个记录中获取特定列

时间:2014-11-05 17:09:38

标签: php mysqli

我有以下代码。此代码不显示任何结果。请解释一下是什么问题?

<?php
require_once("connnection.php"); 

$con=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();

}

?>
<div style="position:absolute;top:200px;right:65px; padding:10px; background-color:#CCFFFF; width:300px; height:400px;">
<hr>
<p><strong>Latest posts</strong></p>
<hr style="position:relative; top:40px; left:30px; width:80%; ">
<?php
$sql = "SELECT question FROM comment ORDER BY id DESC LIMIT 5";
if ($result = mysqli_query($con, $sql)) {

    /* fetch associative array */
    while ($row = mysqli_fetch_row($result)) {
        printf("%s\n", $row[3]);
    }

    /* free result set */

}
?>

我想从db获得五个最新问题并显示它.DB有五条记录。表评论有4个字段。 &#34;问题&#34;是最后一个领域。

3 个答案:

答案 0 :(得分:2)

$row[3]未定义。您需要使用$row[0]

while ($row = mysqli_fetch_row($result)) {
    printf( "%s\n", $row[0] );
}

可替换地:

while ($row = mysqli_fetch_assoc($result)) { // notice the use of `fetch_assoc`
    echo $row['question'] . "\n";
}

答案 1 :(得分:1)

while ($row = mysqli_fetch_row($result)) {
    printf("%s\n", $row[3]);
}

您只选择questions字段,但以某种方式枚举第三个字段。您可以选择使用mysqli_fetch_assoc作为以下内容,以避免将来出现任何混淆

while ($row = mysqli_fetch_assoc($result)) {
    printf("%s\n", $row['questions']);
}

或者您可以使用$row[0]代替$row['3']

答案 2 :(得分:1)

你可以使用echo $ row ['question']是问题的列名是“问题”,否则找到从0开始的列索引,并将值设为$ row [0](例0)

      while ($row = mysqli_fetch_row($result)) {
          echo $row['question']."<br>";
       }

建议您使用列名,因为如果将来更改表结构,您的代码将不会受到更改的影响