2011-08-14 20 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 9時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');

で動作します:

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

はありがとうございました。しかし、レコードの場合、これらの値はデータベース自体から生成され、実際にはエスケープする必要はありませんが、傷つけることはできません。それもありがとう。 – HunderingThooves

1

このような場合は、INSERTの後に警告を照会する必要があります。おそらく、何が間違っているかを指摘する警告があります。

編集:今私は間違っている:間違った日付形式があります。正しい2011-08-14 19:01:30を取得するには、$radate = date('Y-m-d h:i:s');を実行する必要があります。 14番目の月がないので、14番目の月には8日目がありません。 `

さらに、$ _POSTからすぐにデータベースにデータを取り込むと、SQLインジェクションに脆弱です。これは', ''); DELETE FROM attend; --POST ED値を設定するため、悪意のあるユーザーを防ぐよう代わりに

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

のあなたは

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

を行う必要があります。

関連する問題