Получение массива JOIN из MySql - PullRequest
0 голосов
/ 22 марта 2012

Я извлекаю объединенный запрос из БД, используя следующий код:

$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 разных индекса, числовой индекс и индекс имени поле дб. Вот как выглядит 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 ]

1 голос
/ 22 марта 2012

По умолчанию тип результата для mysqli_result::fetch_array() равен MYSQLI_BOTH, что означает, что вы получаете как именованные, так и числовые индексы массива результатов (см. http://php.net/manual/en/mysqli-result.fetch-array.php).

Попробуйте использовать fetch_assoc().

0 голосов
/ 22 марта 2012

Если вы используете строку извлечения (http://www.php.net/manual/en/mysqli-result.fetch-row.php), вы будете извлекать без имен. Я думаю, это то, что вы ищете, верно?

РЕДАКТИРОВАТЬ: Это также применяется к mysql, но функция mysql_fetch_row($ result) вместо mysqli

0 голосов
/ 22 марта 2012

Чтобы уменьшить размер, вам нужно взглянуть на второй необязательный аргумент mysql_fetch_array. Это задокументировано здесь:

http://www.php.net/manual/en/function.mysql-fetch-array.php

Вы можете указать, хотите ли вы просто числовые индексы или ассоциативные массивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...