mysql, дата вводится как все 0? - PullRequest
1 голос
/ 14 августа 2011

У меня есть следующий код:

$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

Но когда я делаю такую ​​диагностику:

<code>$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 '
'; } еще 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 ]

2 голосов
/ 14 августа 2011

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 голос
/ 14 августа 2011

Если это произойдет, вы должны запросить предупреждения после INSERT.Вероятно, есть предупреждение, указывающее вам, что было не так.

РЕДАКТИРОВАТЬ: Теперь я получил ошибку: у вас неправильный формат даты.Вы должны сделать $radate = date('Y-m-d h:i:s');, чтобы получить правильный 2011-08-14 19:01:30.В 14-м месяце нет 8-го дня, как и 14-го месяца.`

Кроме того, вы уязвимы для SQL-инъекций, поскольку вы сразу же переносите данные из $ _POST в базу данных.Вместо

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

вы должны выполнить

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

, поскольку это не позволяет злоумышленнику установить значение POST ed на ', ''); DELETE FROM attend; --.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...