#php #mysql #sql #json #post
#php #mysql #sql #json #Публикация
Вопрос:
(1) Я хотел бы заставить этот файл получить $_POST[‘message’]
и вставить в базу данных.
(2) Я бы хотел, чтобы этот файл выводил данные БД в формате JSON.
Но ничего не выводится, хотя некоторые данные хранятся в БД.
У меня есть этот код.
MySQL
CREATE DATABASE chat;
CREATE TABLE posts(id INTEGER PRIMARY KEY AUTOINCREMENT, message TEXT);
index.php
mb_language("uni");
mb_internal_encoding("utf-8");
mb_http_input("auto");
mb_http_output("utf-8");
$link = mysql_connect('localhost', 'root', 'root');
if ($link) {
die('cannot connect:'.mysql_error());
}
mysql_select_db("chat", $link);
if ($SERVER['REQUEST_METHOD'] == 'POST') {
$message = $_POST['message'];
mysql_query("INSERT INTO posts (message) VALUES ('$message')");
}
$query = mysql_query('SELECT * FROM posts ORDER BY id DESC');
$posts = array();
while ($row = mysql_fetch_object($query)) {
$posts[] = array(
'message' = $row -> message
);
}
header('Content-Type:application/json');
echo json_encode($posts);
?>
Как мне исправить это для вывода JSON?
Комментарии:
1.Вам нужно исправить гораздо больше, чем просто вывод JSON. Для начала: прекратите использовать устаревшее
mysql_*
расширение и исправьте эту зияющую уязвимость при внедрении2. Что именно сохраняется в БД?
3. @AustinMullins является ли $row-> message таким же, как $row[‘сообщение’]??
4. @user3493922 что делает $row-> message ?? что он извлекает?
Ответ №1:
заменить:
‘message’ = $row -> сообщение
‘message’ => $row -> сообщение
Но также вы должны использовать
ВЫБЕРИТЕ * ИЗ, posts
ГДЕ id
= mysql_insert_id()
Комментарии:
1. …у меня есть сомнение .. на самом деле, что делает ‘meesage => $ row-> message .. я знаю, что $ row-> message извлекает переменную message, т.Е. $ _POST [‘message’], но почему мы используем внутри массива?