【问题标题】:MySQL fetch array adds duplicate values?MySQL fetch 数组添加重复值?
【发布时间】:2012-03-04 02:29:38
【问题描述】:

我得到了这个:

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
)

运行后

$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]'")) 

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

编辑:我认为主键正在这样做。关于如何阻止它的任何想法?

【问题讨论】:

    标签: php mysql arrays


    【解决方案1】:

    如果您没有指定结果类型作为第二个参数,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);
    


    作为旁注:

    【讨论】:

    • -1 重复旧的废话。转义与 SQL 注入无关,但盲目的转义“值”将使注入成为可能。
    • 好吧,确保注入 SQL 查询的数据是安全与 SQL 注入有关;转义字符串是一种确保它们是安全的方法;不过,我承认我可以补充一点,应该将相同的想法应用于非字符串值,例如整数 (确保它们确实包含整数,例如 intval()
    • 又是一个老错觉。转义不会使数据“安全”。它只是一种格式。当然,你必须使用它(用于字符串)不是为了任何安全,而是为了保持你的 SQL 一致。整数并不是唯一的例子,标识符是另一个完全和完全无用的转义例子,它应该使你的“值”“安全”
    • 确实需要使用转义 (for strings) 以便获得格式良好的 SQL (如果这些字符串包含特殊字符,例如 SQL-strings-delimiters , 当然);但我认为帮助实现这一目标是某种安全:毕竟,您希望 SQL 查询能够正常运行;-)
    • 好吧,可惜我没有帮你;不过,很高兴我能帮助 OP :-)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多