php - 为什么从数据库中检索的数据被两次添加到 php 数组中?

标签 php mysql sql arrays

我有一个简单的用户表,其中包含以下列:用户名、密码、电子邮件、姓名、姓氏、生日、地址和城市。前三个是强制性的,但其余的可以为空。 我正在连接到数据库并获取数组中的行并打印它。

$dbc=mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$sql = "select * from user"; 
$data = mysqli_query($dbc, $sql) or die("query exec error");
//$json = array();
if(mysqli_num_rows($data)){
    while($row=mysqli_fetch_array($data)){
        //$json['Kullanici'][]=$row;
        print_r($row);
        echo "<br /><br />";
    }
}
mysqli_close($dbc);
//echo json_encode($json);

但是输出是这样的:

Array ( [0] => ayse [username] => ayse [1] => b1b3773a05c0ed0176787a4f1574ff0075f7521e [password] => b1b3773a05c0ed0176787a4f1574ff0075f7521e [2] => ayse@hotmail.com [email] => ayse@hotmail.com [3] => [name] => [4] => [surname] => [5] => 0000-00-00 [birthdate] => 0000-00-00 [6] => [address] => [7] => istanbul [city] => istanbul )

Array ( [0] => baris [username] => baris [1] => 7c4a8d09ca3762af61e59520943dc26494f8941b [password] => 7c4a8d09ca3762af61e59520943dc26494f8941b [2] => bakkurt@hotmail.com [email] => bakkurt@hotmail.com [3] => Barış [name] => Barış [4] => [surname] => [5] => 0000-00-00 [birthdate] => 0000-00-00 [6] => [address] => [7] => [city] => ) 

问题是为什么同时存在 [0]=>baris 和 [username] => baris。我只期待用户名=>baris。我错了吗?我哪里不见了? 如果我解决了这个问题,我将通过删除注释将数组转换为 json。

最佳答案

这不是问题,如果您查看 mysqli_fetch_array() 函数的 PHP 文档,它接受一个参数 resulttype;它确定是将记录作为数组返回,单独使用数字索引,单独使用关联索引,还是同时使用这两种索引(这是您所拥有的)。
默认情况下,该函数使用 MYSQLI_BOTH
单独获取数字索引:

while($row=mysqli_fetch_array($data, MYSQLI_NUM)){
    //this will always return with numeric indices alone
}

有关更多信息,请查看此处 PHP mysqli_fetch_array

关于php - 为什么从数据库中检索的数据被两次添加到 php 数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16120308/

相关文章:

javascript - 带有 jQ​​uery AJAX 的 PHP 函数?

sql - 从 sequelize 中的多个表中选择

MySQL Group By 即使建立索引也很慢,并且实际优化没有意义

php - 无论年份如何过生日

php - 我在 $_SERVER 中没有 PATH_INFO

php - 计算某些网址的浏览量

mysql - 在创建临时表时定义键

php - 从 MySQL 获取一周中每一天的数据

java - 内存泄漏 - com.mysql.jdbc.ConnectionPropertiesImpl$*ANY*ConnectionProperty

MySQL 为什么这个 IF() 语句总是返回相同的值?