未定义的偏移量:连接到db时在php中为0

时间:2016-10-29 23:21:25

标签: php

我是php的新手。

当我运行此脚本时,我收到错误消息:

  

未定义的偏移量:0

代码:while($ row = mysql_fetch_assoc($ result)){             echo $ row ['0'];

    <?php

    if (!$link = mysql_connect('localhost', 'root', '')) {
        echo 'Could not connect to mysql';
        exit;
    }

    if (!mysql_select_db('first_db', $link)) {
        echo 'Could not select database';
        exit;
    }

    $sql    = 'SELECT * FROM users WHERE id = 3';
    $result = mysql_query($sql, $link);

    if (!$result) {
        echo "DB Error, could not query the database\n";
        echo 'MySQL Error: ' . mysql_error();
        exit;
    }

    while ($row = mysql_fetch_assoc($result)) {
        echo $row['0'];
    }

    mysql_free_result($result);

    ?>

这是连接到数据库的另一个脚本,这里语法$row['0']正在运行。

<?php
//Step1
 $db = mysqli_connect('localhost','root','','first_db')
 or die('Error connecting to MySQL server.');
?>

<html>
 <head>
 </head>
 <body>
 <h1>PHP connect to MySQL</h1>

<?php
//Step2
$query = "SELECT * FROM  users";
mysqli_query($db, $query) or die('Error querying database.');

//Step3
$result = mysqli_query($db, $query);
//$row = mysqli_fetch_array($result);

while ($row = mysqli_fetch_array($result)) {
 echo $row[0] . ' ' . $row[1] . ': '. $row[2] .'<br />';
}
//Step 4
mysqli_close($db);
?>

</body>
</html>

为什么语法row['0']适用于第二个脚本但不适用于第一个脚本?

btw我的数据库名为first_db,表名为users。它有3列;命名id,用户名和密码。

1 个答案:

答案 0 :(得分:0)

没有。它不起作用的原因实际上是两件事的组合。首先,使用mysql_Fetch_assoc()返回(如提到https://stackoverflow.com/users/6946846/andrew-wilson)关联数组。其次是你使用的style$row['0']不同 - 第一次用名称 0作为字符串检查数组中的元素,而第二次检查数组中的第一个(数字)键。