首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL fetch数组是否添加了重复的值?

问MySQL fetch数组是否添加了重复的值?
EN

Stack Overflow用户
提问于 2012-02-12 17:36:19
回答 3查看 2.2K关注 0票数 6

我得到了这个:

代码语言:javascript
复制
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
)

在运行此命令后

代码语言:javascript
复制
$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]'")) 

你知道为什么它会像这样复制吗?谢谢

编辑:我认为主键是这样做的。你有办法阻止它吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-12 17:38:37

如果不指定结果类型作为第二个参数,将默认为MYSQL_BOTH (引号):

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

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

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

代码语言:javascript
复制
$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);

作为附注:

代码确保您对注入到查询中的变量进行转义。要防止代码,请参见Choosing an API.,例如,使用mysql_real_escape_string()

  • Before mysql_fetch_array(),您应该测试mysql_query()是否成功,
  • ,特别是对于新项目,您应该使用mysqli或PDO,而不是旧的<代码>C20SQL Injections >函数
票数 13
EN

Stack Overflow用户

发布于 2012-02-12 17:40:10

尝试第二个参数MYSQL_ASSOC或MYSQL_NUM。默认情况下使用MYSQL_BOTH,返回数字键和字段键。

票数 1
EN

Stack Overflow用户

发布于 2012-02-12 17:50:46

Pascal MARTIN已经解释了背后的原因。

我会告诉你使用mysql_fetch_assoc,它只会给你相关的数组。数字部分将不会出现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9247798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档