Подтвердить что ты не робот

Как вставить текущую временную метку в базу данных 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, он терпит неудачу и не может вставить что-либо в базу данных.

Что я делаю неправильно?

4b9b3361

Ответ 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);
}