MySQL获取数组添加重复值?

Sam*_*Sam 6 php mysql arrays

我得到这个:

Array
(
[0] => 1
[id] => 1
[1] => 778613c4344dbc9565c359c1154c6a18
[session] => 778613c4344dbc9565c359c1154c6a18
[2] => fn
[first_name] => fn
[3] => ln
[last_name] => ln
[4] => un
[username] => un
[5] => 016e6128e8ca9dda1b310c364d9b622c
[password] => 016e6128e8ca9dda1b310c364d9b622c
[6] => address
[email] => address
[7] => 100
[permission] => 100
[8] => 10
[year_level] => 10
[9] => 
[department] => 
[10] => Sample
[campus] => Sample
[11] => 0
[logo_url] => 0
)
Run Code Online (Sandbox Code Playgroud)

运行之后

$user = mysql_fetch_array(mysql_query("SELECT session FROM users WHERE username='$cookie[username]' AND first_name='$cookie[first_name]' AND last_name='$cookie[last_name]' AND campus='$cookie[campus]' AND id='$cookie[id]'")) 
Run Code Online (Sandbox Code Playgroud)

任何想法为什么这样重复?谢谢

编辑:我认为主键是这样做的.有关如何阻止它的任何想法?

Pas*_*TIN 13

如果未将结果类型指定为第二个参数,mysql_fetch_array()则默认为MYSQL_BOTH (引用):

通过使用MYSQL_BOTH(默认),您将获得一个包含关联和数字索引的数组.


如果这不是您想要的,您必须将第二个参数传递给该函数,以指示您想要的结果类型.

例如,要仅获取具有列名称作为键的关联数组:

$result = mysql_query("SELECT session FROM users WHERE username='$cookie[username]' AND first_name='$cookie[first_name]' AND last_name='$cookie[last_name]' AND campus='$cookie[campus]' AND id='$cookie[id]'");
$user = mysql_fetch_array($result, MYSQL_ASSOC);
Run Code Online (Sandbox Code Playgroud)


作为旁注:

  • 确保您正在转移注入查询的变量,以防止SQL注入,例如,使用mysql_real_escape_string()
  • 在使用之前mysql_fetch_array(),你应该测试一下mysql_query()是否成功,
  • 而且,特别是对于一个新项目,您应该使用mysqliPDO,而不是旧mysql_*函数 - 请参阅选择API.

  • 好吧,太糟糕了,我没有帮助你; 仍然,很高兴我可以帮助OP :-) (2认同)