PHP & amp; MYSQL: получить все столбцы, выбрать * из строки и json кодировать результаты

Я пытаюсь получить массив из MySQL и распечатать каждый столбец с его значением.

Это то, что я до сих пор:

Получить все столбцы:

$query = "SHOW COLUMNS FROM user_settings";
$resultx = mysql_query($query);$temp=0;$p = array();while ($row = mysql_fetch_array($resultx)) {
$p[$temp] = $row["Field"];$temp++;
}

Выборочные данные имени столбца Foreach, где идентификатор пользователя = $ SESSION [‘id’]

foreach ($p as $f) {

$json = array();
$newquery = "SELECT * FROM user_settings WHERE uid = '" . $_SESSION['id'] ."'";
$newresult = mysql_query($newquery);while($newrow = mysql_fetch_array($newresult)) {
$json[$f] = $newrow[$f];
}

print json_encode($json);}

Это работает просто отлично. Проблема в том, что напечатанный массив таков:

{"column1":"data"}{"column2":"data"}{"column3":"data"}

Вместо Я хотел бы, чтобы JSON кодировать для печати:

[{"column1":"data","column2":"data","column3":"data"}}

0

Решение

Вы можете удалить все это, потому что это избыточно.

$query = "SHOW COLUMNS FROM user_settings";
$resultx = mysql_query($query);$temp=0;$p = array();

while ($row = mysql_fetch_array($resultx)) {
$p[$temp] = $row["Field"];$temp++;
}

Также удалите цикл foreach, чтобы мы остались только с запросом и циклом while для этого запроса.

$json = array();
$newquery = "SELECT * FROM user_settings WHERE uid = '" . $_SESSION['id'] ."'";
$newresult = mysql_query($newquery);

print json_encode(mysql_fetch_assoc($newresult));

Это должно заставить функцию json_encode () кодировать многомерный массив результатов.

Также попробуйте удалить функции mysql_ * и использовать функции mysqli_ * или PDO, потому что функции mysql_ * устарели.

4

Другие решения

Попробуй это:

  $newquery = "SELECT * FROM user_settings WHERE uid = '" . $_SESSION['id'] ."'";
$newresult = mysql_query($newquery);

print json_encode(mysql_fetch_array($newresult));

Я не думаю, что тебе нужен отдых.

3

По вопросам рекламы [email protected]