我有一些脚本,在数据库表中我将dato设置为int(25)和timestamp
我有一个创建主题脚本,然后我创建了一个主题,它在时间戳表(dato)中插入日期和时间。
但不知怎的,我的评论脚本不会插入时间:S和我使用的相同的东西:S。
这是我的剧本
if(isset($_POST['opret_kommentar']))
{
$indhold = $_POST['indhold'];
$godkendt = "ja";
$mysql = connect();
$stmt = $mysql->prepare("INSERT INTO forum_kommentare (fk_forum_traad, brugernavn, indhold, dato, godkendt) VALUES (?,?,?,?,?)") or die($mysql->error);
$stmt->bind_param('issis', $traadID, $_SESSION['username'], $indhold, $dato, $godkendt) or die($mysql->error);
$stmt->execute();
$stmt->close();
$svar = mysqli_insert_id($mysql);
header("location: forum.traad.php?traadID=$traadID&kategoriID=$kategoriID&#$svar");
}
这是我的创建主题脚本,因此您可以看到我使用的相同内容:S
if(isset($_POST['send'])) {
$kategoriID = $_GET['kategoriID'];
$overskrift = $_POST['overskrift'];
$indhold = $_POST['indhold'];
$godkendt = "ja";
$mysql = connect();
$stmt = $mysql->prepare("INSERT INTO forum_traad (overskrift, indhold, fk_forum_kategori, brugernavn, dato, godkendt) VALUES (?,?,?,?,?,?)") or die($mysql->error);
$stmt->bind_param('ssisis', $overskrift, $indhold, $kategoriID, $_SESSION['username'], $dato, $godkendt) or die($mysql->error);
$stmt->execute();
$stmt->close();
$traadID = mysqli_insert_id($mysql);
header("location: forum.traad.php?traadID=$traadID&kategoriID=$kategoriID");
}#Lukker isset send
这是我的SQL
CREATE TABLE IF NOT NOT EXISTS
forum_kommentare
(id
int(11)NOT NULL AUTO_INCREMENT,fk_forum_traad
int(11)NOT NULL,
brugernavn
text NOT NULL,indhold
mediumtext NOT NULL,dato
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,godkendt
varchar(4)NOT NULL DEFAULT'ja',
PRIMARY KEY(id
))ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 4;-
- tabellen
的数据转储forum_kommentare
-
- tabellen
的Struktur-dumpforum_traad
CREATE TABLE IF NOT NOT EXISTS
forum_traad
(id
int(11)NOT NULL AUTO_INCREMENT,overskrift
文本NOT NULL,indhold
mediumtext NOT NULL,fk_forum_kategori
int(11)NOT NULL,brugernavn
文本 NOT NULL,dato
时间戳NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,godkendt
varchar(4)NOT NULL DEFAULT 'ja',PRIMARY KEY(id
))ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 3;- - tabellen
的数据转储forum_traad
希望有人可以帮助我:/
答案 0 :(得分:0)
除了需要正确格式化的代码,以便人们可以阅读它,我强烈建议您使用MySQL日期字段而不是时间戳。
所以将此查询更改为:
// notice that the date is inserted by MySQL with the NOW() operator
$stmt = $mysql->prepare("INSERT INTO forum_traad (overskrift, indhold, fk_forum_kategori, brugernavn, dato, godkendt) VALUES (?,?,?,?,NOW(),?)") or die($mysql->error);
为什么要使用MySQL日期字段而不是时间戳?
DATETIME的范围...... '1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
TIMESTAMP的范围...... '1970-01-01 00:00:01'UTC到'2038-01-19 03:14:07'
不仅如此,你还有许多内置的MYSQL函数可以与像INTERVAL
这样的DATETIME一起使用,这样你就可以做很多事情。
// easy pull all comments values from within a range
SELECT * FROM your_table
WHERE your_date_field = DATE_SUB('2001-01-01 12:12:12' + INTERVAL 15 DAYS;
如果你确实需要在PHP上使用时间戳,你可以像这样在SQL上实时获取它们:
// converts a DATETIME field real time to timestamps
SELECT UNIX_TIMESTAMP(your_date_field)
FROM your_table (...)
And when you pull them out just format them anyway you like using strftime. Example bellow.
// pull a date from MySQL and format them to a custom format
// %A -> full weekday | %B -> full month name | %d -> month day | %Y - year 1999
$sql = "SELECT title, name, UNIX_TIMESTAMP(date) as timestamp
FROM your_table
WHERE your_limits";
$result = mysql_fetch_assoc(mysql_query($sql));
echo strftime("%A, %B %d, %Y", $result['timestamp']);
我已经covered a question in the same topic,所以你可以查看该主题的反馈意见。
希望它有所帮助!
答案 1 :(得分:0)
更便宜,更开心的解决方案是......
$stmt = $mysql->prepare("INSERT INTO forum_traad (overskrift, indhold, fk_forum_kategori, brugernavn, godkendt) VALUES (?,?,?,?,?)") or die($mysql->error);
只是不要设置dato列。当插入或更新行时,任何表的第一个(最左侧)TIMESTAMP
列将自动设置为当前日期时间。