我的MySQLi/PHP代码有问题吗


Is there a prob with my MySQLi/PHP code?

我是MySQLi的新手,似乎找不到任何对我有用的信息。我尝试了以下代码,但没有成功:

    if(isset($_GET['submit']))
{
    $stamp = date("D M d, Y G:i a");
    $mysqli->query("INSERT INTO down (timestamp, username) VALUES ('" . $stamp . "', '" . USER_NAME . "')");
}

我不知道自己做错了什么,所以也许有一些见解?或者,如果有人能介绍我一些网站,那就太好了?因此,似乎什么都不适合我!

HTML是:

<form method="post">
                        <b>Submit a downtime report*</b>: <input type="submit" name="submit" value="Report">
                    </form>

您不必在PHP中使用date()函数。您可以在MySQL 中使用NOW()或CURRENT_TIMESTAMP()

$mysqli->query("INSERT INTO down (`timestamp`, `username`) VALUES (NOW(), '" . USER_NAME . "')");

更多日期功能,你可以在这里找到

我猜USER_NAME是一个常量,它是设置的。

关于有用的资源,您尝试过官方文档吗?

http://php.net/manual/en/book.mysqli.php

它似乎相当全面。

将其更改为

$mysqli->query("INSERT INTO down (timestamp, username) VALUES ('" . $stamp . "', '" . USER_NAME . "')");

$mysqli->query("INSERT INTO down (`timestamp`, `username`) VALUES ('" . $stamp . "', '" . USER_NAME . "')");

原因:timestamp也是SQL中的type,因此您应该这样使用它。

"timestamp"是MySQL关键字,因此被解释为数据类型而不是列名,因此语法没有任何意义。可以通过使用反勾号转义列名来解决此问题。顺便说一句,这对于所有表名和列名都是一种很好的做法,无论它们是否为关键字。因此,按以下方式更改查询应该有效:

$mysqli->query("INSERT INTO `down` (`timestamp`, `username`) VALUES ('" . $stamp . "', '" . USER_NAME . "')");