0

次の値を持つ非表示フィールドを持つ単純なフォームがあります。

<?php echo date('Y-m-d'); ?>

PHP処理スクリプトを介してフォームを送信すると、フォームのすべてが日付を除いてデータベースに入ります。

ここに私のSQLがあります:

$sql = "INSERT INTO wp_reminders (dateofentry, ipaddress, type) VALUES ('$_POST[dateofentry]','$_POST[ipaddress]' ,'$_POST[type]')";

処理ページで日付をエコーすると、正常に表示されます。

データベースの列を次のように設定しました。

 dateofentry date NOT NULL

上記に何か問題がある場合、何か考えはありますか?

4

2 に答える 2

0

MySQLに挿入される日付は、MySQLが解析できる形式の1つに準拠するか、変換する必要があります。通常、 ISO8601が推奨される形式ですYYYY-MM-DD HH:MM:SS

PDOを使用した場合:

$sql = "INSERT INTO wp_reminders (dateofentry, ipaddress, type) VALUES (:dateofentry, :ipaddress, :type)";
$statement = $pdo->prepare($sql);
$statement->bindParam(":dateofentry", strtotime(date("Y-m-d H:i:s")), PDO::PARAM_STR);
$statement->bindParam(":ipaddress", $_POST['ipaddress'], PDO::PARAM_STR);
$statement->bindParam(":type", $_POST['type']), PDO::PARAM_STR);
$statement->execute();

フォームの処理に非常に長い時間がかかることが予想されない限り、クエリの作成時に日付を指定するのが理にかなっている場合があります。strtotimeそうでない場合は、代わりにいつでもその呼び出しをフォームに入れることができます。

于 2013-02-11T22:42:15.533 に答える
-1

SQL クエリを作成するには、次の構文を使用する必要があります。

$sql = "INSERT INTO wp_reminders (dateofentry, ipaddress, type) VALUES ('".addslashes($_POST['dateofentry'])."','".addslashes($_POST['ipaddress'])."' ,'".addslashes($_POST['type'])."')";

あなたの例では、インデックスキーを二重引用符で囲んでいません...

また、php 変数を文字列に入れるべきではありません。連結したほうがよいでしょう。

于 2013-02-11T22:19:25.757 に答える