Как вставить текущую временную метку в базу данных MySQL, используя запрос вставки PHP
В моей базе данных MySQL у меня есть таблица со структурой
username - varchar
insert_time - timestamp
Эта таблица была создана в MySQL с помощью инструмента phpMyAdmin и для столбца insert_time
, я упомянул значение по умолчанию как 0000-00-00 00:00:00
.
Теперь проблема в том, что я должен обновить это значение по умолчанию с текущей временной меткой позже, используя PHP script.
Я пробовал сделать следующий код PHP:
$update_query = 'UPDATE db.tablename SET insert_time=now() '.
'WHERE username='.$somename;
Когда запускается PHP script, он терпит неудачу и не может вставить что-либо в базу данных.
Что я делаю неправильно?
Ответы
Ответ 1
Какое сообщение об ошибке вы получаете?
Я бы предположил, что ваша фактическая ошибка связана с тем, что ваша переменная php не заключена в кавычки. Попробуйте это
$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='" .$somename . "'";
Ответ 2
Ваше использование now() верное. Однако вам нужно использовать один тип котировок вокруг всего запроса, а другой - значения.
Вы можете изменить свой запрос, чтобы использовать двойные кавычки в начале и конце, и одинарные кавычки вокруг $somename
:
$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='$somename'";
Ответ 3
Забыл поставить переменную в оператор sql без кавычек.
$update_query =
"UPDATE db.tablename SET insert_time=NOW() WHERE username='" .$somename."'";
Ответ 4
Этот формат используется для получения текущей метки времени и сохранения в mysql
$date = date("Y-m-d H:i:s");
$update_query = "UPDATE db.tablename SET insert_time=".$date." WHERE username='" .$somename . "'";
Ответ 5
Не нравится любое из этих решений.
вот как я это делаю:
$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='"
. sqlEsc($somename) . "' ;";
то я использую свою собственную функцию sqlEsc:
function sqlEsc($val)
{
global $mysqli;
return mysqli_real_escape_string($mysqli, $val);
}