Задать вопрос
@iiiajlyn
(づ ◕‿◕ )づ

Как в php получить Последнее значение из таблицы mysql определенной даты даты?

$conn = mysqli_connect($db_host, $db_user, $db_password, $db_name);
$dataNew = "01.10.2024";
$value =   //название таблицы
$item = "DATE";  //название колонки
$sql = "SELECT * FROM " . $value . " WHERE . $item . = ".$dataNew;

if($result = $conn->query($sql)){
while($row = $result->fetch_array()){
$usersArray[$value][$dataNew] = $row;
}
}

Не работает как я вижу
Выбери все из таблицы $value где DATE равна дате
Но даже этот вариант не работает что я делаю не так?
Нужно получить последние данные определенной даты
Проблем с подключением нет пробовал на простых выборках

672b5dd19b363335706013.png
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Простой 10 комментариев
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Выносить имя таблицы и колонки в переменные не нужно. Их надо написать прямо в запросе.
А дату надо подставлять в запрос через подготовленные выражения.

Если в БД хранится только дата, то чтобы получить все строки за определённую дату, код будет такой.
$sql = "SELECT * FROM название таблицы WHERE  DATE = ?";
$result = $conn->execute_query($sql, [$dateNew]);
$usersArray = $result->fetch_all(MYSQLI_ASSOC);

Если же хранится дата и время, то надо подставить начальный и конечный период. То есть запрос будет

SELECT * FROM название таблицы WHERE  DATE BETWEEN ? AND ?

и в него подставлять значения "$dateNew 00:00:00" и "$dateNew 23:23:59"

Чтобы получить одну запись, надо добавить в запрос оператор LIMIT 1, а fetch_all(MYSQLI_ASSOC) поменять на fetch_assoc()
Чтобы получить "последнюю" запись, надо добавить в запрос сортировку по тому полю, по которому считается последовательность добавления. И сделать сортировку в обратном порядке
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы