我正在使用以下代码从数据库中提取已加入的查询:
$query = 'SELECT `profiles`.`city`, `users`.`first_name`, `users`.`last_name`'
. ' FROM profiles, users'
. ' WHERE ((`profiles`.`user_id` = 3) AND (`users`.`user_id` = 3))'
. ' LIMIT 1';
$result = $connection -> query($query);
$arr = $result -> fetch_array();
$feedback = $arr;
$result -> close();
return $feedback;
这不是我的最终代码,这只是初步测试我的加入。
查询似乎运行正常,它提取了我需要的单行信息,但我注意到当我var_dump
它时,它将数组放入2个不同的索引,数字索引和名称的索引db字段。这是var_dump
的样子:
array(6) { [0]=> string(4) "Reno" ["city"]=> string(4) "Reno" [1]=> string(4) "John" ["first_name"]=> string(4) "John" [2]=> string(3) "Doe" ["last_name"]=> string(3) "Doe" }
这实际上是我的查询结果的大小加倍。对于单行来说,这不是什么大不了的事,但如果/当我开始使用相同的方法来绘制多个记录时,将结果的大小加倍可能会很昂贵。
我尝试过foreach
循环:
foreach ($arr as $key=>$value) {
$feedback[$key] = $value;
}
但它给我留下了相同的结果。我做错了什么,如果是的话,我该如何纠正呢?这是正常的吗?
谢谢你的帮助
答案 0 :(得分:1)
mysqli_result::fetch_array()
的默认结果类型为MYSQLI_BOTH
,这意味着您同时获得了命名和数字结果数组索引(请参阅http://php.net/manual/en/mysqli-result.fetch-array.php)。
请尝试使用fetch_assoc()
。
答案 1 :(得分:0)
要减小大小,您需要查看mysql_fetch_array的第二个可选参数。这在此处记录:
http://www.php.net/manual/en/function.mysql-fetch-array.php
您可以指定是否只需要数字索引或关联数组。
答案 2 :(得分:0)
如果您使用获取行(http://www.php.net/manual/en/mysqli-result.fetch-row.php),您将获取没有名称的提取。我想这就是你要找的,对吗?
编辑:这也适用于mysql,但函数是mysql_fetch_row($ result)而不是mysqli