0

尝试按日期排序,但总是在我创建列“日期”并向其添加日期 NOT NULL 时,它将回显“0000-00-00”而不是日期。

然后我做了一些 SQL 更改

阅读文章后

CREATE TABLE `driptone`.`announces` (
`announcements`       text,
`updated_at`          TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`created_at`          DATETIME DEFAULT NULL,
PRIMARY KEY (created_at)
);

但现在当我提交时说

MySQL 问题:列数与第 1 行的值数不匹配

我做错什么了?

//error_reporting(0);
$announcements = $_POST['announcement'];    
if (!empty($announcements)) {
    if (strlen($announcements) > 10) {
        $date = date("Y/m/d");
        $sql="INSERT INTO announcements (message, date_time) VALUES ('$announcements,$date')";
        if (!mysql_query($sql))
        die('MySQL problem:'.mysql_error());
    } else {
    echo 'Need to be atleast 10 characters long';
    }
} else {
echo 'Fields are empty';
}
$queryPerson = mysql_query("SELECT * FROM announces ORDER BY created_at DESC") or die(mysql_error());
while($row = mysql_fetch_assoc($queryPerson) ) {
 echo $row['announcements'] . ' ' . $row['created_at'] . '<br /><br /><br />';
}
4

4 回答 4

0
$sql="INSERT INTO announcements (message, date_time) VALUES ('$announcements,$date')";

您必须用引号分隔值,不能将它们放在一个引号中

VALUES ('$announcements','$date')";

此外,您的代码中的表名和列名不正确。


还要取 created_at 字段的主键。

于 2013-02-20T00:06:16.673 回答
0

'$announcements,$date'应该'$announcements','$date'是。

不过,请使用mysqli.

于 2013-02-20T00:06:22.563 回答
0

这是因为VALUES ('$announcements,$date')被认为是一个字符串。

改写为:VALUES ('$announcements', '$date').

另外我建议切换到PDO,因为 mysql 驱动程序非常过时。您的代码非常不安全。

于 2013-02-20T00:07:08.277 回答
0

首先,如果要按 created_at 日期排序,则需要在该列上建立索引。

其次,您会收到该错误,因为您试图插入名为的列message,并且date_time当您的表结构具有这些名为announcementsand的字段时created_at。您需要使用正确的列名。

第三,您需要在要插入的每个值周围加上单引号,而不是整个值组。

于 2013-02-20T00:07:45.957 回答