2015-02-22 1 views
-1

Я вычисляю время и сохраняю его в базе данных для дальнейшего использования. Это для формы резервирования, которую я хотел бы закодировать, и я сделал простую форму, подобную ей, для тестирования, если бы промежуток дней хранился в базе данных, но все, что я получаю, это ошибка.Ловкая фатальная ошибка: объект класса DateInterval не может быть преобразован в строку в C: xampp htdocs testing.php в строке 30

Обманутый смертельный error: Объект класса DateInterval не может быть преобразован в строку в C: \ xampp \ htdocs \ testing.php в строке 30

Я просто новичок. Я уже проверил это на других сайтах, но ничто не поместило бы мою проблему. Я был бы очень признателен за всю помощь. Спасибо.

<?php 
 

 
$localhost = "127.0.0.1"; 
 
$username = "root"; 
 
$password = ""; 
 
$dbase="testing"; 
 

 
$conn = new mysqli($localhost, $username, $password, $dbase); 
 

 
//check connection 
 
if ($conn->connect_errno) { 
 
\t die('Sorry we are having a problem.'); 
 
} 
 

 

 
if($_SERVER["REQUEST_METHOD"] == "POST") 
 
{ 
 

 
$dateOfReserv = $_POST['dateOfReserv']; 
 
$dateUntil \t = $_POST['dateUntil']; 
 

 

 
\t $date1=date_create($dateOfReserv); 
 
\t $date2=date_create($dateUntil); 
 
\t $diff=date_diff($date1,$date2); 
 
\t $diff->format("%days"); 
 

 

 
\t \t $sql="INSERT INTO `tbldate` (datestart, dateend, spanofdate) 
 
\t \t \t VALUES ('$dateOfReserv', '$dateUntil', '$diff')"; 
 

 
\t \t 
 
\t \t if ($conn->query($sql) === TRUE) { 
 
    \t echo "New record created successfully"; 
 

 
\t \t } 
 
\t \t else { 
 
    \t echo "Error: " . $sql . "<br>" . $conn->error; 
 
\t \t } \t 
 

 
\t \t $conn->close(); 
 

 
\t \t \t 
 
\t \t exit(); 
 

 

 

 

 
} 
 

 

 
?> 
 

 
<!DOCTYPE html> 
 
<head> 
 
<title>testing for inserting date in xampp server</title> 
 
</head> 
 

 
<body> 
 

 

 
<form method="POST"> 
 
<ul> 
 
\t <li> 
 
\t \t \t <label for='dateOfReserv'>Date of Reservation<span>*</span></label><br /> 
 
\t \t \t <input type='date' id='dateOfReserv' name='dateOfReserv' placeholder='Date of Reservation' size='40' /> 
 
\t </li> 
 
\t <li> 
 
\t \t \t <label for='dateUntil'>Until?*</label><br /> 
 
\t \t \t <input type='date' id='dateUntil' name='dateUntil' placeholder='End Date of Reservation' size='40' /> 
 
\t </li> 
 
\t <li> 
 
\t \t \t <input type='submit' name='submitbtn' value='Send Date' /> 
 
\t </li> 
 

 
</ul> 
 

 
</form> 
 

 

 
</body> 
 

 
</html>

ответ

1

Вы хотите:

$diff = $diff->d; 

Вместо:

$diff->format("%days"); 

Также обратите внимание, что ваш код уязвим для SQL Injection, а если сроки не отформатированные, вы также получите ошибки from date_create/date_diff!

+0

oh. Благодарю. но что, если я хочу добавить еще один день? Я имею в виду, если я выберу дату сегодня и 24, код даст мне 2, что, если я тоже хочу подсчитать дату сегодня? как .. это так ... $ diff = $ diff-> d; $ diff = $ diff + 1; – BlackSkull

+0

, но я использую дату типа ввода, как бы он был уязвим для SQL-инъекции? – BlackSkull

+0

Не все браузеры реализуют 'type = date', также, если я делаю' curl -X POST -data 'dateUntil = <уязвимая строка>' 'ваша форма не имеет значения :) - словом, никогда не доверяйте клиенту – Martin

 Смежные вопросы

  • Нет связанных вопросов^_^