Это дает мне эту ошибку при запуске скрипта: вызов функции-члена fetch_assoc() на boolean. Это сводит меня с ума.
Я получаю данные из окна ввода следующим образом: 2017-12-14 06:42:10
$sql = "SELECT count(*) as total FROM 'purchase' where purchase_datetime BETWEEN str_to_date($date1, 'Y-m-d H:i:s') and str_to_date($date2, 'Y-m-d H:i:s')";
или же
$sql = "SELECT count(*) as total FROM 'purchase' where purchase_datetime BETWEEN '$date1' and '$date2'";
или же
Попытка:
$date1 = date('Y-m-d H:i:s', $date1);
$date2 = date('Y-m-d H:i:s', $date2);
ПОЛНЫЙ КОД:
<?php
if (isset($_POST['submit']) && isset($_POST['date1']) && isset($_POST['date2'])) {
$date1 = $_POST['date1'];
$date2 = $_POST['date2'];
$date1 = date('Y-m-d H:i:s', $date1);
$date2 = date('Y-m-d H:i:s', $date2);
$sql = "SELECT count(*) as total FROM 'purchase' where purchase_datetime BETWEEN '$date1' and '$date2'";
$query_result = $conn->query($sql);
$rows = $query_result->fetch_assoc();
echo "Result is: " . $rows['total'] . " purchases";
}
?>
убедитесь, что ваш формат:
$date1=$_POST['date1']//1496620800;
$date2=$_POST['date2']//1496707200;
$date1 = date('Y-m-d', $date1);//2017-06-05
$date2 = date('Y-m-d', $date2);//2017-06-06
Формат buy_datetime: 2017-xx-xx
Функция date
предназначена для форматирования сегодняшней даты, а не заданной даты. Используйте функцию DateTime::format
для форматирования заданной даты. Попробуй это:
$date1 = $date1->format('Y-m-d H:i:s');
$date2 = $date2->format('Y-m-d H:i:s');
$sql = "SELECT COUNT(*) AS total FROM purchase WHERE purchase_datetime BETWEEN '$date1' AND '$date2';";
Кроме того, вы можете использовать date_format
псевдонима date_format
следующим образом:
$date1 = date_format($date1, 'Y-m-d H:i:s');
$date2 = date_format($date2, 'Y-m-d H:i:s');
$sql = "SELECT COUNT(*) AS total FROM purchase WHERE purchase_datetime BETWEEN '$date1' AND '$date2';";