MySQL/PHP를 사용하여 필드에 now()를 사용하여 현재 날짜/시간을 삽입합니다.
MySQL은 다른 데이터베이스와 마찬가지로 새로운 레코드를 추가할 때 datetime 필드에 함수 now()를 자동으로 삽입할 수 없는 것이 분명하기 때문에 SQL 문을 사용하여 명시적으로 삽입하려고 합니다.(타임스탬프의 다양한 제한으로 인해 사람들은 curdate()가 있는 타임스탬프가 답이 아니라고 생각하는 것 같습니다.)웹에는 SQL을 사용하여 now()를 삽입할 것을 제안하는 수많은 문서가 있습니다.
그러나 SQL 문을 사용하여 날짜 시간을 입력하려고 하면 필드에 현재 시간/날짜가 입력되지 않고 기본 0000-00- 등만 표시됩니다.구문 오류일 수도 있지만, 미칠 것 같아 글을 올립니다.
mysql_query("INSERT INTO users (first, last, whenadded) VALUES ('$first', '$last', now())";
첫 번째와 마지막이 삽입되지만 추가될 때는 0000-00-00 등이 추가되지 않습니다.
필드 유형은 datetime이며 조회, 속성, null 기본값 또는 추가 값이 없습니다.그나저나 나우()는 작은 따옴표로 넣으려고 했는데...오류가 발생했습니다.
NOW()는 보통 SQL 문으로 동작하며 날짜와 시간을 반환합니다.데이터베이스 필드에 올바른 유형(datetime)이 있는지 확인합니다.그렇지 않으면 언제든지 PHP date() 함수를 사용하여 다음을 삽입할 수 있습니다.
date('Y-m-d H:i:s')
하지만 이건 추천하고 싶지 않아요.
mysql_query 명령을 닫지 않았습니다.
mysql_query("INSERT INTO users (first, last, whenadded) VALUES ('$first', '$last', now())"
);
마지막 괄호에 주의해 주세요.
Pekka가 말했듯이, 이렇게 작동해야 합니다.이 자기 완결형 예에서는 문제를 재현할 수 없습니다.
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->exec('
CREATE TEMPORARY TABLE soFoo (
id int auto_increment,
first int,
last int,
whenadded DATETIME,
primary key(id)
)
');
$pdo->exec('INSERT INTO soFoo (first,last,whenadded) VALUES (0,1,Now())');
$pdo->exec('INSERT INTO soFoo (first,last,whenadded) VALUES (0,2,Now())');
$pdo->exec('INSERT INTO soFoo (first,last,whenadded) VALUES (0,3,Now())');
foreach( $pdo->query('SELECT * FROM soFoo', PDO::FETCH_ASSOC) as $row ) {
echo join(' | ', $row), "\n";
}
(현재) 인쇄되는 것
1 | 0 | 1 | 2012-03-23 16:00:18
2 | 0 | 2 | 2012-03-23 16:00:18
3 | 0 | 3 | 2012-03-23 16:00:18
다음은 TIMESTAMP 필드와 DEFAULT CURRENT_TIMESTamp를 사용한 거의 동일한 스크립트입니다.
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->exec('
CREATE TEMPORARY TABLE soFoo (
id int auto_increment,
first int,
last int,
whenadded TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
primary key(id)
)
');
$pdo->exec('INSERT INTO soFoo (first,last) VALUES (0,1)');
$pdo->exec('INSERT INTO soFoo (first,last) VALUES (0,2)');
sleep(1);
$pdo->exec('INSERT INTO soFoo (first,last) VALUES (0,3)');
foreach( $pdo->query('SELECT * FROM soFoo', PDO::FETCH_ASSOC) as $row ) {
echo join(' | ', $row), "\n";
}
타임스탬프는 첫 번째 예시와 동일한 날짜 문자열 표현으로 변환됩니다(적어도 PHP/PDO/mysqlnd 버전).
할 수 있는 는 당신이 을 문자열로 입니다.'now()'
call이 now()
.
니니른른른른른 른
SELECT NOW();
정확한 값이 반환되는지 확인할 수 있습니까?
현재 및 새로운 버전의 Mysql을 사용하면 PHP 파일에 코드를 추가하지 않고 현재 날짜를 자동으로 삽입할 수 있습니다.이는 다음과 같이 데이터베이스를 셋업하면서 Mysql에서 실행할 수 있습니다.
이제 새로운 게시물은 자동으로 고유한 날짜와 시간을 얻게 됩니다.이게 도움이 되길 바라.
SYSDATE()는?
<?php
$db = mysql_connect('localhost','user','pass');
mysql_select_db('test_db');
$stmt = "INSERT INTO `test` (`first`,`last`,`whenadded`) VALUES ".
"('{$first}','{$last}','SYSDATE())";
$rslt = mysql_query($stmt);
?>
NOW()와 SYSDATE()에 대한 자세한 내용은 MySQL의 NOW(), SYSDATE() 및 CURRENT_DATE() 간의 차이를 참조하십시오.
나우()
내 밑에서 일했지만 내 필드 유형은 날짜뿐이고 네 필드 유형은 날짜입니다.나는 이것이 사실인지 아닌지 잘 모르겠다
둘 다 나한테는 잘 먹히는데...
<?php
$db = mysql_connect('localhost','user','pass');
mysql_select_db('test_db');
$stmt = "INSERT INTO `test` (`first`,`last`,`whenadded`) VALUES ".
"('{$first}','{$last}','NOW())";
$rslt = mysql_query($stmt);
$stmt = "INSERT INTO `users` (`first`,`last`,`whenadded`) VALUES ".
"('{$first}', '{$last}', CURRENT_TIMESTAMP)";
$rslt = mysql_query($stmt);
?>
참고: mysql_query()는 현재 버전의 PHP에서 MySQL에 연결하는 가장 좋은 방법이 아닙니다.
추가된 열로 이동하여 기본값을 CURRENT_TIMESTamp로 변경하기만 하면 됩니다.
언급URL : https://stackoverflow.com/questions/9841336/insert-current-date-time-using-now-in-a-field-using-mysql-php
'itsource' 카테고리의 다른 글
클릭으로 PHP 기능 실행 (0) | 2022.09.12 |
---|---|
RxJs Subject 또는 Observable의 현재 값을 얻는 방법 (0) | 2022.09.12 |
셀 값을 날짜로 설정하고 기본 Excel 날짜 형식을 적용하려면 어떻게 해야 합니까? (0) | 2022.09.12 |
JavaScript를 사용하여 드롭다운 목록에서 선택한 값 가져오기 (0) | 2022.09.12 |
__init_.py를 사용하더라도 "비패키지 내 상대 Import 시도"를 수정하는 방법 (0) | 2022.09.11 |