2013-02-20 85 views
0

尝试按日期排序,但始终在创建colum'date'时添加日期NOT NULL,它将回显'0000-00-00'而不是日期。尝试按日期时间排序我的列表,但失败

然后我做阅读文章

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

但现在当我提交后说,一些SQL更改

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 />'; 
} 

谢谢!

+0

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers – Nick 2013-02-20 00:11:55

回答

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

你要的值与引号分开,你不能把它们放在一个报价

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

还你的表名和列名在你的代码不正确。


另请参见created_at字段的主键。

+0

现在我得到MySQL的问题:重复条目'0000-00-00 00:00:00'键'PRIMARY' – 2013-02-20 00:13:11

+0

@Jonykale - 检查我的编辑 – Galen 2013-02-20 00:38:53

0

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

虽然,使用从mysqli准备好的语句。

0

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

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

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

0

首先,如果您打算按created_at日期进行排序,则需要该列上的索引。

其次你得到这个错误,因为你试图插入一个名为messagedate_time列时,你的表结构有这些字段命名为announcementscreated_at。您需要使用正确的列名称。

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