使用mysql_fetch_array()进行简单查询 -
SELECT id, name, roll FROM student
我得到了>
Array (
[0] => 1
[id] => 1
[1] => sam
[name] => sam
[2] => 5
[roll] => 5
)
但是,如果我用0->
替换rollSELECT id, name, 0 FROM student
它发送 - >
Array (
[0] => 0
[id] => 1
[1] => sam
[name] => sam
[2] => 0
)
'id'给出'0'。而查询在mysql中运行良好。
是mysql_fetch_array的错误吗?
答案 0 :(得分:2)
这不是一个错误。密钥为0
的数组值正在被覆盖。
由于您没有为具有常量值0
的列指定任何别名,因此其列名将为0
。当此列名成为数组中的键时,将使用键0
覆盖已存在的值。
[0] => 1 // for id
[id] => 1
[1] => sam // for name
[name] => sam
[0] => 0 // for 0 .. THIS WILL OVERWRITE.
解决此问题的最简单方法是提供列别名:
SELECT id, name, 0 AS FOO FROM student
答案 1 :(得分:2)
mysql_fetch_array有两个参数。你用第二个信号表示你想要得到你的结果。
MYSQL_ASSOC
将为您提供带字段名称的关联数组(如果您决定将其用作字段名称,则为0
)。你会得到:
Array ( [id] => 1 [name] => sam [roll] => 5 )
MYSQL_NUM
会按照您要求的顺序为数字编制索引。你会得到:
Array ( [0] => 1 [1] => sam [2] => 5 )
MYSQL_BOTH
是默认设置,它会以两种方式填充数组,并且会使这样的事情复杂化。
答案 2 :(得分:0)
您应该使用mysql_fetch_assoc
代替。
答案 3 :(得分:0)
另一种解决方案是将您的查询更改为:
SELECT id, name, 0 AS zero FROM student