从MySql中检索JOIN数组

时间:2012-03-22 01:12:53

标签: php mysql join mysqli

我正在使用以下代码从数据库中提取已加入的查询:

$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;
}

但它给我留下了相同的结果。我做错了什么,如果是的话,我该如何纠正呢?这是正常的吗?

谢谢你的帮助

3 个答案:

答案 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