繁体   English   中英

从MySql检索JOIN数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM