2013-02-20 50 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。您需要使用正確的列名稱。

第三,您需要在您嘗試插入的每個值的周圍放置單引號,而不是整組值。