好吧,所以我天生就害怕一切,MySQL
这是我的桌子:
+----+-----------------+------+
| id | name | age |
+----+-----------------+------+
| 1 | Timmy Mellowman | 23 |
| 2 | Jeff Johnson | 18 |
+----+-----------------+------+这是我的PHP code (连接到DB之外)
$raw = mysql_query("SELECT * FROM example") or die(mysql_error());
$row = mysql_fetch_array($raw);
echo "\n\n";
print_r($row);这是我的输出:
Array
(
[0] => 1
[id] => 1
[1] => Timmy Mellowman
[name] => Timmy Mellowman
[2] => 23
[age] => 23
)为什么这是输出?双倍的名字?为什么同时为1和name设置名称?
在另一边是他们更好的使用MySQL的方法。
发布于 2012-12-23 03:33:33
根据PHP文档 for mysql_fetch_array:
返回一个字符串数组,该数组对应于获取的行,如果没有更多行,则返回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";
}发布于 2012-12-23 03:35:36
如果未指定返回类型,则默认值为mysql_fetch_array ( $raw ,MYSQL_BOTH ),它将返回如上所述的关联索引和数字索引。
对于数字索引使用
$row = mysql_fetch_array($raw, MYSQL_NUM)用于关联索引
$row = mysql_fetch_array($result, MYSQL_ASSOC)若要访问所有行,请使用while循环。
while ($row = mysql_fetch_array($row, MYSQL_NUM)) {
printf("ID: %s Name: %s Age:%s", $row[0], $row[1],$row[2]);
}或者如果使用关联索引
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf("ID: %s Name: %s Age:%s", $row["id"], $row["name"],$row["age"]);
}https://stackoverflow.com/questions/14008383
复制相似问题