SQL: вставить в $ _POST и вывести JSON

#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’], но почему мы используем внутри массива?