MySQL和PHP行数组

Man*_*mer 3 php mysql

好吧所以我对MySQL的一切都有天生的恐惧

这是我的表:

+----+-----------------+------+
| id | name            | age  |
+----+-----------------+------+
|  1 | Timmy Mellowman |   23 |
|  2 | Jeff Johnson    |   18 |
+----+-----------------+------+
Run Code Online (Sandbox Code Playgroud)

这是我的PHP code(连接到DB之外)

$raw = mysql_query("SELECT * FROM example") or die(mysql_error()); 
$row = mysql_fetch_array($raw);
echo "\n\n";
print_r($row);
Run Code Online (Sandbox Code Playgroud)

所以这是我的输出:

Array
(
    [0] => 1
    [id] => 1
    [1] => Timmy Mellowman
    [name] => Timmy Mellowman
    [2] => 23
    [age] => 23
)
Run Code Online (Sandbox Code Playgroud)

为什么这是输出?这个名字加倍?为什么为[1]和[name]设置名称?

另一方面,他们是将PHP与MySQL结合使用的更好方法

j08*_*691 5

根据mysql_fetch_array 的PHP文档:

返回与获取的行对应的字符串数组,如果没有更多行,则返回FALSE.返回数组的类型取决于result_type的定义方式.通过使用MYSQL_BOTH(默认),您将获得一个包含关联索引和数字索引的数组.使用MYSQL_ASSOC,您只能获得关联索引(因为mysql_fetch_assoc()有效),使用MYSQL_NUM,您只能获得数字索引(因为mysql_fetch_row()可以工作).

所以在你的行$row = mysql_fetch_array($raw);$ row接收一个同时具有关联和数字索引的数组,因为这是默认值.如果只想要关联索引,使用$row = mysql_fetch_array($raw,MYSQL_ASSOC);(或mysql_fetch_assoc())或者只想要数字索引,请使用$row = mysql_fetch_array($raw,MYSQL_NUM);(或mysql_fetch_row()).

要检索所有行,请使用以下内容:

while ($row = mysql_fetch_array($raw)) {
    echo "<p>" . $row['id'] . " - " . $row['name'] . " - " . $row['age'] . "</p>\n";  
}
Run Code Online (Sandbox Code Playgroud)