0

一連の基本情報 (名前、電子メールなど) を収集するフォームがあり、それをデータベースに投稿します。そのフォームで、php の日付関数を使用して「日」、「月」、「年」のデータベース列を挿入し、フォーム データが送信された日付を表示します。

これをテーブルに出力したいので(データベースにログインせずにチェックできるように)、そのテーブルのデフォルトを現在の日付にします。私はこのようなものがうまくいくと思っていましたが、うまくいきません:

$query="SELECT * FROM form_data WHERE day='echo date("d");' AND month='echo date("m");' AND year='echo date("Y");'";

最終的には、テーブルが表示される日付選択ボックスをいくつか用意して、必要な日付を選択し、送信して、関連するデータをテーブルに返すことができるようにしたいと考えています。ただし、最初のステップは、今日の現在のデータを表示するようにテーブルをデフォルトに設定することです。

誰かが助けてくれれば大歓迎です。

4

4 に答える 4

2

スレッドを完成させるために、先に進んで提案しmysqli::prepareます。ここに記載されているように、クエリを準備し、それにハンドルを返します。
これは、SQLインジェクションを防ぎ、クエリ解析のオーバーヘッドを減らし、コードの可読性を向上させるためです。とにかく、prepareを使用することをお勧めします。
そして、これはあなたがそれを行う方法です:

$database = new mysqli('localhost', 'username', 'password', 'database');
if ($stmt = $database->prepare("SELECT * FROM form_data WHERE day=? AND month=? AND year=?")) {
  $stmt->bind_param('sss', date("d"), date("m"), date("Y"));
  $stmt->execute();
  $result = $stmt->get_result();
  $stmt->close();
}
$database->close();

上記のコードに$resultは、データベースから読み取られた行が含まれています。

PDOバージョンは次のとおりです。

$stmt = $database->prepare("SELECT * FROM form_data WHERE day=? AND month=? AND year=?")
$stmt->execute(array("".date("d"), "".date("m"), "".date("Y")));
于 2012-08-20T03:32:28.940 に答える
1

echo date("d"); はできません。または、ステートメントをステートメント内に効果的に配置することになります。

echo date("d"); を保存する必要があります。変数に入れ、次のようなことをします

$myDay = date("d");
$myMonth = date("m");
$myYear = date("Y");
$query="SELECT * FROM form_data 
        WHERE day='$myDay' 
        AND month='$myMonth' 
        AND year='$myYear'";

または区切りを使用します。のようにそれらを撃つために

 $query="SELECT * FROM form_data 
         WHERE day='".date("d")."' 
         AND month='".date("m")."' 
         AND year='".date("Y")."'";
于 2012-08-20T03:03:33.103 に答える
0

何かのようなもの

$query="SELECT * FROM form_data WHERE day='" . date("d") . "' AND month='" . date("m") . "' AND year='" . date("Y") . "'";

動作するはずです。

クエリをデバッグする良い方法は、クエリを文字列として出力して、PHP がそれをどのように解釈したかを確認することです。

echo "SELECT * FROM form_data WHERE day='" . date("d") . "' AND month='" . date("m") . "' AND year='" . date("Y") . "'"

また、このメソッドは SQL インジェクションの影響を受けることに注意してください。

于 2012-08-20T03:04:35.857 に答える