#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;