2015-08-04 2 views
0

Может кто-нибудь, пожалуйста, дайте мне знать, как я могу создать массив из запроса MySQL?Создайте массив из запроса MySQL?

Массив должен выглядеть следующим образом:

<?php 
$testLocs = array(
    '1' => array('info' => '1. New Random info and new position', 'lat' => 45345345, 'lng' => 44.9634), 
    '2' => array('ino' => '1. New Random info and new position', 'lat' => 686788787, 'lng' => 188.9634), 
    '3' => array('info' => '1. New Random info and new position', 'lat' => 88888, 'lng' => 144.9634), 
    '4' => array('info' => '1. New Random info and new position', 'lat' => 666666, 'lng' => 144.964) 
); 
echo json_encode($testLocs); 
exit(); 
?> 

Где текст для info и чисел для lat и lng являются MySQL $rows.

Любая помощь будет оценена по достоинству.

ответ

1

Читать manual

Пример взят из PHP вручную

$sth = $dbh->prepare("SELECT name, colour FROM fruit"); 
$sth->execute(); 
$result = $sth->fetch(PDO::FETCH_ASSOC); 
1

Если я undestand правильно вам необходимо сопоставить результаты MySQL массива в какой-то нормированного массива. Функция array_map была бы идеальной для него:

$array = array_map(function ($row) { 
    return array(
     'info' => $row['info'], 
     'lat' => $row['lat'], 
     'lng' => $row['lng'], 
    ); 
}, $rows); 

Если вам нужны индексы, начиная с 1, вы должны добавить следующую строку:

$array = array_combine(range(1, count($array)), $array); 
+0

не могли бы вы сообщить мне, как вы на самом деле использовали бы это в запросе sql? –

+0

Я думал, что у вас уже есть результаты запроса mysql. Как вы подключаетесь к db из php? –

+0

У меня действительно есть результаты запроса mysql. но когда я помещаю ваш код в мой 'while loop' в запросе MYSQL, я получаю' [] ', напечатанный на моей php-странице. поэтому я попросил вас показать мне пример, если это возможно, поэтому я знаю, как работает «array_combine» в отношении цикла while и т. д. –

1
$testLocs = array(); 

    $sql = <<<SQL 
      SELECT id, info, position, lat, lng 
      FROM tbl_info 
SQL; 

    $q = mysql_query($sql);  

    while ($r = mysql_fetch_assoc($q)) { 
     $testLocs[$r['id']] = $r; 
    } 

    print_r($testLocs); 

Очевидно заменить запрос с правильным.

PS. Это путь mysql, а не путь mysqli. Возможно, стоит посмотреть на оба.

+0

Вы не должны объявлять $ testLocs где-нибудь? –

+0

Да по вашим правам. это все равно будет работать, но будет выдавать предупреждения. Я отредактирую –

+0

'mysql_ *' функции ** устарели **. рассмотрите использование 'mysqli_ *' или PDO –

Смежные вопросы