[英]Retrieving a JOIN array from MySql
我正在使用以下代码从数据库中提取一个联接的查询:
$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;
}
但这给我带来了相同的结果。 我是在做错什么吗?如果是,我该如何纠正?这是正常现象吗?
谢谢你的帮助
mysqli_result::fetch_array()
的默认结果类型是MYSQLI_BOTH
这意味着您将同时获得命名和数字结果数组索引(请参阅http://php.net/manual/zh/mysqli-result.fetch-array.php )。
尝试改用fetch_assoc()
。
为了减小大小,您需要查看mysql_fetch_array的第二个可选参数。 在此处记录:
http://www.php.net/manual/zh/function.mysql-fetch-array.php
您可以指定是否只需要数字索引或关联数组。
如果您使用提取行(http://www.php.net/manual/en/mysqli-result.fetch-row.php),则将不使用名称进行提取。 我认为这是您要寻找的,对吗?
编辑:这也适用于mysql,但函数是mysql_fetch_row($ result)而不是mysqli
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.