#php #mysql #json
#php #mysql #json
Вопрос:
Я попытался повторить значение $ query из запроса mysql_query, но я не получаю идентификатор ресурса #, который я обычно получаю. Пожалуйста, не могли бы вы сказать мне, в чем проблема со следующим кодом. Кроме того, я был бы признателен, если бы вы могли сказать мне, как я мог бы, во-первых, запустить цикл for для получения данных из запроса, а во-вторых, закодировать их в json.
Я бы хотел, чтобы данные из запроса анализировались как json следующим образом:
Массив словарей, словарь выглядит следующим образом:
click_id = ....
shorten_url = ....
referrer = ....
ip_address = ....
country_code = ....
PHP:
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
mysql_select_db("nucleusi_mkdev") or die("Unable to select db");
$query = "SELECT `click_id` , `shorturl` , `referrer` , `ip_address` , `country_code`FROM yourls_log";
$result = mysql_query($query);
echo $result;
?>
Комментарии:
1. Что произойдет, если вы сделаете var_dump ($result) вместо echo? Это просто null?
2. он возвращает: ресурс (2) типа (результат mysql). Я попробовал mysql_num_rows, и это вернуло правильное количество строк для запроса.
Ответ №1:
Идентификатор ресурса может изменяться для каждого запроса. Поэтому я бы не стал заострять на этом внимание. Если вам интересно узнать о результатах, вы можете сделать mysql_num_rows($result);
В документах есть отличные примеры кода. Проверьте mysql_fetch_assoc() для перебора результатов вашего запроса и json_encode () для кодирования каждой записи.
Краткий фрагмент для демонстрации двух вместе:
$records = array();
while ($row = mysql_fetch_assoc($result)) {
print_r($row);
array_push($records, $row);
}
echo json_encode($records);
Комментарии:
1. как бы я сохранил результаты mysql_fetch_assoc () до того, как они будут закодированы в json_encoded? Пожалуйста, имейте в виду, что я новичок!
2. Вы пробовали приведенный выше код. Проверьте это, поскольку это может дать вам некоторые идеи. Подробнее о хранилище .
3. работает отлично. Мне пришлось удалить строку печати, но это работает 🙂