programing

PHP 삽입 쿼리를 사용하여 MySQL 데이터베이스에 현재 타임스탬프를 삽입하는 방법

css3 2023. 9. 2. 08:43

PHP 삽입 쿼리를 사용하여 MySQL 데이터베이스에 현재 타임스탬프를 삽입하는 방법

MySQL 데이터베이스에 구조가 있는 테이블이 있습니다.

username - varchar
insert_time - timestamp

이 테이블은 MySQL에서 phpMyAdmin 도구를 사용하여 생성되었습니다.insert_time열, 기본값을 다음과 같이 언급했습니다.0000-00-00 00:00:00.

문제는 나중에 PHP 스크립트를 사용하여 이 기본값을 현재 타임스탬프로 업데이트해야 한다는 것입니다.

저는 다음과 같은 PHP 코드를 시도했습니다.

$update_query = 'UPDATE db.tablename SET insert_time=now() '.
                'WHERE username='.$somename;

PHP 스크립트가 실행되면 실패하고 데이터베이스에 아무것도 삽입할 수 없습니다.

내가 뭘 잘못하고 있는 거지?

어떤 오류 메시지가 표시됩니까?

저는 당신의 실제 오류가 당신의 php 변수가 따옴표로 싸여 있지 않기 때문이라고 생각합니다.사용해 보세요.

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='" .$somename . "'"; 

이 형식은 현재 타임스탬프를 가져오고 mysql에 저장하는 데 사용됩니다.

$date = date("Y-m-d H:i:s"); 

$update_query = "UPDATE db.tablename SET insert_time=".$date." WHERE username='" .$somename . "'"; 

현재()의 사용법이 정확합니다.그러나 전체 쿼리 주위에 따옴표 유형을 사용하고 값 주위에 따옴표 유형을 사용해야 합니다.

시작과 끝에 큰따옴표를 사용하고, 주변에 작은따옴표를 사용하도록 쿼리를 수정할 수 있습니다.$somename:

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='$somename'";

따옴표 없이 sql 문에 변수를 넣는 것을 잊었습니다.

 $update_query = 
      "UPDATE db.tablename SET insert_time=NOW() WHERE username='" .$somename."'";

그 어떤 해결책도 좋아하지 않습니다.

제가 하는 방법은 다음과 같습니다.

$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);
}

대신에NOW()사용할 수 있습니다.UNIX_TIMESTAMP()또한:

$update_query = "UPDATE db.tablename 
                 SET insert_time=UNIX_TIMESTAMP()
                 WHERE username='$somename'";

MySQL에서 UNIX_TIMestamp와 NOW()의 차이

언급URL : https://stackoverflow.com/questions/6075926/how-to-insert-the-current-timestamp-into-mysql-database-using-a-php-insert-query