Как вывести запись из БД?

В любой момент ко мне могут придти данные (методом POST). Я их принимаю и записываю в БД — все работает, данные заносятся в БД . Таблица БД состоит из id с автоинкриментом и blabla.

Дальше мне нужно эти самые данные, которые записываются в blabla, автоматически вывести на страницу. Не пойму как сделать это?

Пока имеется такой код:
$result = $mysqli->query ("SELECT blabla FROM table WHERE id=(SELECT max(id) from table)"); // запрос на выборку — он работает, выдает последнюю запись.
echo $result;// выводим данные

/* очищаем результирующий набор */
$result->close();

Специально отправил данные — они записались в бд, далее обновляю страницу, но она пустая.
В чем ошибка?
  • Вопрос задан
  • 532 просмотра
Пригласить эксперта
Ответы на вопрос 3
@RoverWhite
Очевидно потому что в $result у Вас находиться вовсе не текст, а объект-результат запроса.
$row = $result->fetch_assoc();
echo $row['blabla'];
Ответ написан
@tschin
Посмотрите, что выводит
echo '<pre>'; 
print_r($result);
echo '</pre>';
Ответ написан
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
В целом Вам уже предложили верное (по крайней мере, логически верное) решение. Но лично я вижу у Вас два ключевых момента:

1. Зачем Вам получать данные из базы, которые только что, туда же и записали? Тем более, таким, относительно извращенным образом, и тем более в 2 запроса (запрос + вложенный запрос). Если нужно получить последнюю запись из базы, достаточно сделать запрос типа:
SELECT * FROM table ORDER BY id DESC LIMIT 1;
Так мы получим последнюю запись, причем не ту, которую мы туда вставили, а ту, которая физически будет последней на момент выполнения запроса, что полностью аналогично Вашему варианту, но в 1 запрос (без подзапросов).

Есть ещё вариант запроса, в один запрос:
SELECT * FROM table WHERE id = LAST_INSERT_ID();
По этому варианту, не могу точно сказать что мы получим, последнюю существующая запись в БД на момент выполнения запроса, или конкретно последнюю вставленную нами запись в БД... но работает он точно не хуже Вашего примера :)

1.1. Почему бы нам сразу не выводить те данные, которые мы только что записали в БД? Ведь это как раз те же самые данные, которые нам и нужны, но они уже получены.

2. Обычно, в такой ситуации, приводят вывод var_dump() (или аналогичной функции), что бы понять, почему именно данные не выводятся. А что бы это понять, нужно сначала выяснить, что у нас в переменной вообще... по крайней мере, это может помочь другим разработчикам, а Вы сможете более точно сформулировать вопрос, например, "ожидалось, что в результате будет скалярный тип - а там почему-то курсор результата запроса из БД". То есть,
<?php
var_dump($result);
//вместо
echo $result;

- сильно облегчит решение подобных задач в будущем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы