2011-08-14 19 views
1

我有以下代碼:mysql,日期輸入全爲0?

$radate = date('Y-d-m h:i:s'); 
echo $radate; 
foreach($_POST['member'] as $member) 
{ 
    mysql_query("INSERT INTO attend (UserName, rDate) values('$member', '$radate')"); 
    mysql_query("UPDATE users set rAttend=(rAttend+1) where UserName='$member'"); 
} 
mysql_query("INSERT INTO raids (rDate) value('$radate')"); 
mysql_query("UPDATE users SET rTotal=(rTotal+1)"); 

    mysql_close(); 
?> 

目前回波是打印: 2011-14-08九點47分17秒

但是,當我做診斷這樣的:

$result_id = mysql_query('SELECT * from raids'); 
if($result_id) 
    { 
    $results = array(); 
    while($row = mysql_fetch_assoc($result_id)) 
    { 
$results[] = $row; 
} 
echo '<pre>'; 
print_r($results); 
echo '</pre>'; 
} 
else 
echo mysql_error(); 

我得到這個作爲輸出:

Array 
(
[0] => Array 
    (
     [raidID] => 1 
     [rDate] => 0000-00-00 00:00:00 
    ) 

[1] => Array 
    (
     [raidID] => 2 
     [rDate] => 0000-00-00 00:00:00 
    ) 

[2] => Array 
    (
     [raidID] => 3 
     [rDate] => 0000-00-00 00:00:00 
    ) 

[3] => Array 
    (
     [raidID] => 4 
     [rDate] => 0000-00-00 00:00:00 
    ) 

) 

所以,以更簡潔的方式,插入時間我做錯了什麼?

回答

2

MySQL的日期格式是Y-m-d H:i:s,不Y-d-m h:i:s :)
它應與$radate = date('Y-m-d H:i:s');

BTW工作,不要忘記逃避任何東西你把一個查詢:

mysql_query("INSERT INTO attend (UserName, rDate) values('" . mysql_real_escape_string($member). "', '" . mysql_real_escape_string($radate) . "')"); 
+0

謝謝你了。儘管如此,這些值都是從數據庫本身生成的,並且不需要轉義,但我認爲它不會受到傷害。也爲此感謝。 – HunderingThooves

1

如果發生這種情況,您應該在INSERT之後查詢警告。可能有警告指出你出了什麼問題。

編輯:現在我得到了錯誤:你有錯誤的日期格式。你應該做$radate = date('Y-m-d h:i:s');爲了得到正確的2011-08-14 19:01:30。沒有第14個月的第8天,因爲沒有第14個月。 `

此外,當您將數據從$ _POST立即帶入數據庫時​​,您很容易受到SQL注入的攻擊。取而代之的

INSERT INTO attend (UserName, rDate) values('$member', '$radate') 

你應該做的

INSERT INTO attend (UserName, rDate) values('" . mysql_real_escape($member). "', '$radate') 

,因爲這可以防止惡意用戶對POST ED值設置爲', ''); DELETE FROM attend; --