2016-02-02 5 views
1

У меня есть структура таблицы вроде этого:Получение всего содержимого из таблицы

id,name,age,etc... 

Я хочу, чтобы получить все записи и отображать их на моем сайте в структуре таблицы, так же, как они организованы в самой таблице MYSQL :

| id | name | age | 
| --- | ----- | --- | 
| 1 | Peter | 23 | 
| 2 | Susan | 34 | 
| 3 | Tom | 45 | 

с помощью следующего кода я могу получить все имена:

$query = "SELECT * FROM users"; 

if ($result = $link->query($query)) { 
    while($row = $result->fetch_assoc()){ 
     echo "name: " . $row['name'] . "<br />"; 
    } 
} 

Это результат:

name: Peter 
name: Susan 
name: Tom 

Но я должен указать каждый столбец отдельно с помощью $row['name']. Что, если есть> 100 столбцов, нужно ли указывать каждый из них?

Есть ли способ, чтобы просто получить все данные из моей таблицы (включая все имена столбцов). В ответ JSON:

{"users":[ 
    {"id":"1", "name":Peter", "age":"23"}, 
    {"id":"2", "name":"Susan", "age":"34"}, 
    {"id":"3", "name":"Tom", "age":"45"} 
]} 
+0

Используйте 'mysql_field_name', чтобы получить имя столбца из БД. –

+2

Просто обратите внимание, но вы выполняете свой запрос дважды. – jeroen

+2

100 столбцов, вероятно, плохой дизайн стола –

ответ

4

Да, просто использовать что-то вроде:

foreach($row as $colName => $colValue) 

Внутри ваш цикл while.

+0

Спасибо, но могли бы вы предоставить небольшой пример, пожалуйста? – user1170330

+1

Конечно. Просто увеличить свой цикл пока с чем-то вроде этого: 'в то время как ($ строка = $ result-> FETCH_ASSOC()) { \t Еогеасп ($ строки в $ ColName => $ colValue) { \t \t эхо $ ColName. ":". $ ColValue; \t} } ' – Defiant

0

Вы можете использовать цикл Еогеасп как этот

foreach($result as $column=>$value) 
{ 
    echo $column." : ".$value; 
} 

Но точки почему ты беспокоишься за 100 столбцов в таблице? Согласно нормализации, у вас не будет столько столбцов в одной таблице. Но даже если у вас есть, ваше имя столбца не будет красивым для отображения пользователя из-за соглашения об именах, такого как column_name.

Используйте json_encode для преобразования в json.

0
$query = "SELECT * FROM users"; 
$result = mysqli_query($link, $query); 
$users=array(); 
$response=NULL; 
if ($result = $link->query($query)) { 
    while($row = $result->fetch_assoc()){ 
     $users['users'][]=$row; 
    } 
    $response=json_encode($users); 
} 
0

Попробуйте, как показано ниже:

$query = "SELECT * FROM user"; 
$all_users = array(); 
if ($result = $link->query($query)) { 
    $users = array();$i=0; 
    while($row = $result->fetch_assoc()){ 
     $users[$i]['id'] = $row['id']; 
     $users[$i]['name'] = $row['name']; 
     $users[$i]['age'] = $row['age']; 
     $i++; 
    } 
} 
$all_users['users'] = $users; 
echo json_encode($all_users); 
Смежные вопросы