PHP为什么我的函数返回两次具有不同键的数组的结果?

时间:2012-03-01 13:26:59

标签: php function

我的PHP函数有问题。 它使用不同的键返回结果两次...
我希望结果只有一次没有数字键。

此查询和函数返回以下数组:

<?php
#The query
$typo = GetRowsParams("SELECT * FROM glyphs WHERE g_OK=1");  

#The function   
function GetRowsParams($requete, $params = array())
{
global $bdd;
$stmt = $bdd->prepare($requete) or die(print_r($req->errorinfo()));;
$stmt->execute($params);
$result = $stmt->fetchAll();
return $result;
}
?>


# The Array
Array (
[0] => Array (
    [g_ID] => 1
    [0] => 1
    [g_name] => zero_Nagar.svg
    [1] => zero_Nagar.svg
    [g_height] => 1174
    [2] => 1174
    [g_width] => 352
    [3] => 352
    [g_tag] => Test
    [4] => Test
    [g_u_ID] => 2
    [5] => 2
    [g_path] => 02uploads/Test/zero_Nagar.svg
    [6] => 02uploads/Test/zero_Nagar.svg
    [g_path_PNG] => 02uploads/Test/zero_Nagar.png
    [7] => 02uploads/Test/zero_Nagar.png
    [g_OK] => 1
    [8] => 1
    )
[1] => Array (
    [g_ID] => 2
    [0] => 2
    [g_name] => A
    Nagar.svg [1] => A
            …
            …

为什么每行用不同的键显示两次?我的错误在哪里?

感谢您的帮助......

3 个答案:

答案 0 :(得分:3)

这是因为默认情况下php返回一个数组,其中所有数据都有文本和数字索引。 要仅保留文本索引,请在fechAll函数中传递PDO :: FETCH_ASSOC,如下所示: stmt->fetchAll(PDO::FETCH_ASSOC);

答案 1 :(得分:2)

像这样添加参数PDO :: FETCH_ASSOC:

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

(你可以在这里看到不同的获取样式:http://www.php.net/manual/en/pdostatement.fetch.php

答案 2 :(得分:0)

阅读PDOStatement::fetch methods。第一个参数是“获取样式”,默认为获取类似于上面的数组。如果您只想要一个将字段名称映射到valuse的数组,请使用:

$result = $bdd.fetchAll(PDO::FETCH_ASSOC);