我在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
…
…
为什么每行用不同的键显示两次?我的错误在哪里?
感谢您的帮助…
这是因为默认情况下php返回一个数组,其中所有数据都有一个文本索引和一个数字索引。要只保留文本索引,请在fechAll函数中传递PDO::FETCH_ASSOC,如下所示:stmt->fetchAll(PDO::FETCH_ASSOC);
添加参数PDO::FETCH_ASSOC,类似于:
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
(您可以在此处看到不同的提取样式:http://www.php.net/manual/en/pdostatement.fetch.php)
阅读PDOStatement::fetch方法。第一个参数是"fetch样式",它默认为获取一个与上面类似的数组。如果您只想要一个将字段名映射到valuse的数组,请使用:
$result = $bdd.fetchAll(PDO::FETCH_ASSOC);