mysql,日期输入为全0?

时间:2011-08-14 16:52:20

标签: php mysql date

我有以下代码:

$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 09: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 个答案:

答案 0 :(得分:2)

MySQL的日期格式为Y-m-d H:i:s,而非Y-d-m h:i:s :) 它应该与$radate = date('Y-m-d H:i:s');

一起使用

顺便说一句,不要忘记逃避查询中的任何内容:

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

答案 1 :(得分:1)

如果发生这种情况,您应该在INSERT之后查询警告。可能会有警告指出你出了什么问题。

编辑:现在我弄错了:你的日期格式错了。您应该$radate = date('Y-m-d h:i:s');才能获得正确的2011-08-14 19:01:30。由于没有第14个月,因此第14个月没有第8天。 `

此外,当您将$ _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; --