parschakov
@parschakov
Начинающий изучать PHP и JS

Как получить нужный массив из mySql таблицы?

Здравствуйте. Отправляя запрос в БД, получаю таблицу с данными, которую хотел бы перенести в массив. На данный момент имею такой скрипт:
$sql = 'SELECT wp_bp_xprofile_fields.name, wp_bp_xprofile_data.value, wp_bp_xprofile_data.user_id, wp_bp_xprofile_data.field_id FROM wp_bp_xprofile_data INNER JOIN wp_bp_xprofile_fields ON wp_bp_xprofile_data.field_id = wp_bp_xprofile_fields.id ORDER BY user_id, field_id';

$result = mysql_query($sql);

$arr = array();

while ($row = mysql_fetch_array($result)) {
    foreach ($row as $key=>$value)
        $arr[$row['user_id']][] = array($key =>  $value);
}


mysql_free_result($result);

print_r($arr);


Получаю массив вида:
array(7) {
	[1]=>array(8) {[0]=>array(1) {[«ФИО»]=>string(6) «Иванов Иван Иоанович»}
	[1]=>array(1) {[«Индекс»]=>string(6) «123321»}
	[2]=>array(1) {[«Адрес»]=>string(31) «Декабристов 14 — 435»}
	[3]=>array(1) {[«Город»]=>string(12) «Москва»}
	[4]=>array(1) {[«Страна»]=>string(14) «Россия»}
	[5]=>array(1) {[«Отправление»]=>string(51) «a:1:{i:0;s:33:»Отправлен»;}»}
	[6]=>array(1) {[«Получение»]=>string(47) «a:1:{i:0;s:29:»Получен»;}»}
	[7]=>array(1) {[«Номер отправления»]=>string(13) «CZ892359487RU»}
	}


А хотел бы получать массив такого вида:
array(7) {
	[1]=>array(8) {	[«ФИО»]=>[«Иванов Иван Иоанович»];
			[«Индекс»]=> [«123321»];
			[«Адрес»]=> [«Декабристов 14 — 435»];
			[«Город»]=> [«Москва»];
			[«Страна»]=> [«Россия»];
			[«Отправление»]=> [«Отправлен»];
			[«Получение»]=> [«Получен»];
			[«Номер отправления»]=>[«CZ892359487RU»]
		}

То есть без лишних массивов. Чтобы в одном массиве, были другие массивы с пользователями.
Как изменить код, подскажите пожалуйста? Не могу додуматься.
Или может проще этот массив перебрать в новый массив?
  • Вопрос задан
  • 10455 просмотров
Решения вопроса 2
slusarvitaliy
@slusarvitaliy
Системный администратор
Прекращай использовать mysql_query. От него уже отказались в php 5.6.
Используй mysqli.
$mysqli = new mysqli("localhost", "user", "password", "dbname"); //подключение
$mysqli ->query("SET NAMES 'utf8' "); //вся выборка будет в юникоде

$sql = 'SELECT wp_bp_xprofile_fields.name, wp_bp_xprofile_data.value, wp_bp_xprofile_data.user_id, wp_bp_xprofile_data.field_id FROM wp_bp_xprofile_data INNER JOIN wp_bp_xprofile_fields ON wp_bp_xprofile_data.field_id = wp_bp_xprofile_fields.id ORDER BY user_id, field_id';

$result = $mysqli ->query($sql); //запрос

//функция вывода информации из бд

function printResult($result){
            echo "Количество записей: ". $result->num_rows ."<br>";
            while(($row = $result->fetch_assoc()) != FALSE){
                   $u++;
                   echo $u."-й пользователь с ID: ". $row['user_id']."<br>";
            }
}

printResult($result);


Ответ написан
parschakov
@parschakov Автор вопроса
Начинающий изучать PHP и JS
AlikDex AlikDex:
while ($row = mysql_fetch_array($result)) {
$arr[$row['user_id']][$row['name']] = $row['value'];
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы