Я пытаюсь получить массив из 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"}}
Вы можете удалить все это, потому что это избыточно.
$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_ * устарели.
Попробуй это:
$newquery = "SELECT * FROM user_settings WHERE uid = '" . $_SESSION['id'] ."'";
$newresult = mysql_query($newquery);
print json_encode(mysql_fetch_array($newresult));
Я не думаю, что тебе нужен отдых.