2017-01-06 6 views
-2

私が取り組んでいるプロジェクトで助けが必要です。 date1とdate2の2つのテーブルがあります。MySQLの現在の日付は2つの日付の間です

今、現在の日付がdate1とdate2の間にあるすべての行を表示する必要があります。

$date = date(Y-m-d); 
$sql = 'SELECT * FROM boekingen WHERE "$date" BETWEEN date1 AND date2'; 

が、これは動作しません: は、私が持っているどのようなこれまでのところです。 "$date"を2017-01-06に置き換えても機能しますが、どうすればこの問題を解決できますか? ありがとうございます!

+0

どのように私はPHPでSQLインジェクションの脆弱性を作成するのですか? mysqliまたはPDOを使用する必要があります。いずれかの基本的なチュートリアルでは、パラメータを使用してクエリを実行する方法を説明してください。以下を参照してください:http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php(注:私はC#の人ですので、おそらくもっと良いライブラリがありますが、仕事) – ebyrob

+1

投稿する前にマニュアルを一読しませんでしたか? http://php.net/manual/en/function.date.phpあなたが今持っているものは、 '未定義のY定数'と 'm'と' d'を '仮定した' Y 'で間違って投げます。 .'と 'm'と' d' .................. –

+0

* "どうすればこの問題を解決できますか?" * - 正しい構文を使用しています。 'date(" Y-m-d ")' –

答えて

1

あなたはdate()に引数を囲む引用符を配置する必要があります。

$date = date('Y-m-d'); 

そして、あなたは、あなたが二重引用符で$sqlに割り当てる文字列、そうでない場合$date変数は展開されませんをラップする必要があります。

$sql = "SELECT * FROM boekingen WHERE '$date' BETWEEN date1 AND date2"; 

What is the difference between single-quoted and double-quoted strings in PHP?

2

date()のマニュアルは、その構文と引数についての引用符を使用して明らかです。

あなたは何を持っていないので、PHPは、あなたがそれらをconstantsとして事前に定義されていると仮定しています。未定義の定数の使用:X
お知らせ行に/path/to/file.phpで想定している 'Y' - 未定義の定数Yの使用:

お知らせ:

Error reportingはあなたに次のことを投げているだろうM - ラインX
通知に/path/to/file.phpに 'M' と仮定: - ラインX

に/path/to/file.phpに 'D' と仮定未定義定数dの使用例#4から取った例date()マニュアルからの書式設定:

<?php 
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the 
// Mountain Standard Time (MST) Time Zone 

$today = date("F j, Y, g:i a");     // March 10, 2001, 5:16 pm 
$today = date("m.d.y");       // 03.10.01 
$today = date("j, n, Y");      // 10, 3, 2001 
$today = date("Ymd");       // 20010310 
$today = date('h-i-s, j-m-y, it is w Day');  // 05-16-18, 10-03-01, 1631 1618 6 Satpm01 
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day. 
$today = date("D M j G:i:s T Y");    // Sat Mar 10 17:16:18 MST 2001 
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');  // 17:03:18 m is month 
$today = date("H:i:s");       // 17:16:18 
$today = date("Y-m-d H:i:s");     // 2001-03-10 17:16:18 (the MySQL DATETIME format) 
?> 
0

を使用し、この

$date = date(Y-m-d); 
$sql = 'SELECT * FROM boekingen WHERE STR_TO_DATE(\'$date'\', \'%m/%d/%Y\') BETWEEN date1 AND date2'; 

のようなものは、日付1より大きい日付2であることを確認してください。

0
date = date(Y-m-d); 
$sql = 'SELECT * FROM boekingen WHERE "$date" 

これはあなたの質問のコードです。

phpの文字列に単一引用符を使用すると、変数が展開されません。

$dateの周りに二重引用符と単一引用符を使用するかのどちらか連結例えば

$sql = 'SELECT * FROM boekingen WHERE "' . $date .'" 

それともsprintfの

$sql = sprintf('SELECT * FROM boekingen WHERE "%s", $date) 
関連する問題