PHP дата в базе данных MySQL работает не так, как планировалось

#php #mysql #datetime #time

#php #mysql #дата и время #время

Вопрос:

Итак, я пытался решить эту проблему самостоятельно в течение нескольких часов, и это сводит меня с ума.

Я просто пытаюсь поместить дату в базу данных MySQL, код выглядит следующим образом:

 $timeStarted = date("Y-m-d H:i:s", time());
$sqlquery = "INSERT INTO deviceStats (currTime, ...) VALUES ($timeStarted, ...)";
mysql_query($sqlquery);
echo $timeStarted;
  

Мой возврат ajax сообщает мне, что $ timeStarted находится в формате propper, он указывает правильное время, но если у меня есть эта переменная в моем запросе, она не будет выполняться. поле currTime в базе данных установлено в datetime, поэтому оно должно работать.

Комментарии:

1. с какой стати мой вопрос был понижен в рейтинге?

2. Вокруг есть несколько идиотов, не волнуйтесь. Я поддержал это.

Ответ №1:

Почему бы просто не использовать NOW ()?

 $sqlquery = "INSERT INTO deviceStats (currTime, ...) VALUES (NOW(), ...);
  

Комментарии:

1. Мне нужно повторить это СЕЙЧАС (), поэтому мне нужно что-то сохранить в переменной php. Если я могу echo NOW (), то это просто замечательно!

2. Запустите этот запрос select NOW() (но выполнение этого после вашего первого запроса немного изменит значение). Или вы можете пойти mysql_last_insert_id(); и повторно выбрать запись, чтобы получить значение now.

3. можете ли вы вывести, как именно выглядит sql, чтобы мы могли видеть, как выглядит полное утверждение?

4. попробуйте заключить переменную в одинарную кавычку. $sqlquery = «ВСТАВИТЬ В deviceStats (currTime, …) ЗНАЧЕНИЯ (‘$timeStarted’, …)»;

5. вы назвали это одинарными кавычками. Я должен тебе пиво.

Ответ №2:

Ваша проблема в том, что строки даты в MySQL являются именно такими строками и поэтому должны либо заключаться в одинарные кавычки, либо, предпочтительно, передаваться как параметры.

Используя PDO, это было бы довольно просто

 $stmt = $pdo->prepare('INSERT INTO `deviceStats` (`currTime`, ...) VALUES (?, ...)');
$ts = date('Y-m-d H:i:s');
$stmt->bindParam(1, $ts);
$stmt->execute();
echo $ts;