Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果fieldname为0,PHP Mysql_fetch_数组将失败_Php_Mysql - Fatal编程技术网

如果fieldname为0,PHP Mysql_fetch_数组将失败

如果fieldname为0,PHP Mysql_fetch_数组将失败,php,mysql,Php,Mysql,使用mysql_fetch_array()进行简单查询- SELECT id, name, roll FROM student 我得到-> Array ( [0] => 1 [id] => 1 [1] => sam [name] => sam [2] => 5 [roll] => 5 ) 但是,如果我用0-> SELECT id, name, 0 FROM student 它发送-> Array (

使用mysql_fetch_array()进行简单查询-

SELECT id, name, roll FROM student
我得到->

Array (
    [0] => 1
    [id] => 1
    [1] => sam
    [name] => sam
    [2] => 5
    [roll] => 5
)
但是,如果我用0->

SELECT id, name, 0 FROM student
它发送->

Array (
    [0] => 0
    [id] => 1
    [1] => sam
    [name] => sam
    [2] => 0
)
“id”给出了“0”。而查询在mysql中运行良好


这是mysql\u fetch\u数组的错误吗?

这不是错误。正在覆盖键为
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

这不是一个错误。正在覆盖键为
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

您应该改用
mysql\u fetch\u assoc

您应该改用
mysql\u fetch\u assoc

另一个解决方案是将查询更改为:

SELECT id, name, 0 AS zero FROM student

另一种解决方案是将查询更改为:

SELECT id, name, 0 AS zero FROM student
接受两个参数。你用第二个信号表示你想得到什么结果

MYSQL\u ASSOC
将为您提供一个带有字段名的关联数组(如果您决定将其用作字段名,甚至可以使用
0
)。您将获得:

Array ( [id] => 1 [name] => sam [roll] => 5 )
Array ( [0] => 1 [1] => sam [2] => 5 )
MYSQL_NUM
将按照您要求的顺序,给出用数字索引的结果行。您将获得:

Array ( [id] => 1 [name] => sam [roll] => 5 )
Array ( [0] => 1 [1] => sam [2] => 5 )
MYSQL\u这两个都是默认值,它将以两种方式填充数组,并且会使类似的事情复杂化。

接受两个参数。你用第二个信号表示你想得到什么结果

MYSQL\u ASSOC
将为您提供一个带有字段名的关联数组(如果您决定将其用作字段名,甚至可以使用
0
)。您将获得:

Array ( [id] => 1 [name] => sam [roll] => 5 )
Array ( [0] => 1 [1] => sam [2] => 5 )
MYSQL_NUM
将按照您要求的顺序,给出用数字索引的结果行。您将获得:

Array ( [id] => 1 [name] => sam [roll] => 5 )
Array ( [0] => 1 [1] => sam [2] => 5 )

MYSQL\u-BOTH
是默认值,它将以两种方式填充数组,并且会使类似的事情变得复杂。

因此,如果我将任何数字作为字段,它将无法正常工作。为什么不使用MYSQL\u-fetch\u行或使用MYSQL\u-NUM选项作为第二个参数呢,如果我把任何数字作为字段-它应该不能正常工作。为什么不使用mysql\u fetch\u行或mysql\u NUM选项作为第二个参数?