使用mysqli回应输出

时间:2014-06-02 12:15:22

标签: php

我收到通知:未定义的偏移:当我尝试输出数据库表中的每一行时出现0错误。代码有问题吗?

$mysqli = new mysqli('localhost', 'root', '', 'databasename');
$query = "SELECT * FROM tablename";
    if ($result = $mysqli->query($query)) {
        $i = 0;
        while ($row = $result->fetch_assoc()) {
            printf ($row[$i]); //output:  Notice: Undefined offset: 0 in C:\wamp\www\helloworld.php on line 19
            $i++;
        }
    }

4 个答案:

答案 0 :(得分:3)

每次创建

$row并从数据库中返回一行数据 - 不需要递增它 - 也不会有超过零的索引 - 除非您的查询使用列名或数字的别名。它只是数据库中的一行,并且在while循环的每次迭代中,它都是下一行。

$query = "SELECT * FROM tablename";
    if ($result = $mysqli->query($query)) {
        while ($row = $result->fetch_assoc()) {
            printf ($row); 
            //output:  Notice: Undefined offset: 0 in 
            // C:\wamp\www\helloworld.php on line 19
        }
    }

fetch_assocfetch_array之间的区别很简单。当你fetch_assoc时,它将返回包含你正在选择的列的索引的行(如果你使用它们,则返回它们的别名),而fetch_array只返回一个数字排序的数组。

答案 1 :(得分:1)

fetch_assoc不返回行号索引,它返回列名作为索引。

试试这段代码

while($row = $result->fetch_assoc()){
echo $row['column_name'];
}

编辑: 用于回显所有列名称和值:

while($row = $result->fetch_assoc()){
   foreach($row as $key  => $value){
       echo 'Column Name : '.$key.' => Value: '.$value .'<br>';
   }
}

答案 2 :(得分:1)

使用它可以帮助你

$mysqli = new mysqli('localhost', 'root', '', 'databasename');
    $query = "SELECT * FROM tablename";
        if ($result = $mysqli->query($query)) {

            while ($row = $result->fetch_array()) {
                foreach($row as $row_val)
                {
                  print($row_val); 
                }
                //or instead of foreach direcly use print_r($row);
            }
        }

答案 3 :(得分:1)

在您的代码中,使用fetch_assoc()代替fetch_array()不仅仅是问题。您使用$i=0并将其递增至number of rows fetched。然后用它来检索column。那就是你打印第一行的第一列,第二行的第二列,第三行的第三列等等。然后,如果表只有3 columns并且选择查询返回10 rows个数据,剩余的7行将导致循环中的无效列,并将导致未定义的索引错误。

您可以使用foreach

获取所有字段

试试这个

$mysqli = new mysqli('localhost', 'root', '', 'databasename');
$query = "SELECT * FROM tablename";
    if ($result = $mysqli->query($query)) {
           while ($row = $result->fetch_assoc()) {
            foreach ($row as $key=>$value) {
               echo $value.', '; //output:  Notice: Undefined offset: 0 in C:\wamp\www\helloworld.php on line 19

        }
    }