2016-12-12 16 views
0

私は投稿がの値を持つMySQLテーブルに記録されているWebサイトを持っています。これはDateTimeに設定されています。格納された値の例は2016:12:12 15:30:21です。PHP日付の選択日付と等しい日付:

これで、特定の日付のすべてのレコードを選択するページを構築したいと考えています。これは、PHPスクリプトとadded.php?date=2016-12-12のようなURLパラメータを使用しています。

だから、このための私のPHPスクリプトは、次のようになります。

<?php 
    if(isset($_GET["date"])){ 
     $date = $_GET["date"]; 
    } else { 
     header("Location: $site_url"); 
     exit(); 
    }; 
?> 

どのように私は今、実際にこの日付で行を選択しますか?私は使用しようとしています:

$rows_sql = "SELECT id FROM posts WHERE added = '$date'; 

しかし、これは動作していません。どのように私が持っている形式でこれを動作させることができる任意のアイデア?

あなたのコードは、SQLインジェクションにvurenableです:

+0

あなたはこれでデータベースを照会助けを求めています日付?あなたのPHPは実際には何もしません..... '$ site_url'が参照するファイルの関連部分を投稿できますか? – WillardSolutions

+0

エラーログを確認しましたか? –

+0

閉じる引用符( ")が欠けていますが、このクエリは機能しますが、データベースに送信する実際のコードを投稿する必要があります。 – colburton

答えて

0

で指定された一日から行を選択したい場合は、以下のようにクエリの行を変更してくださいすることができ:

$rows_sql = "SELECT id FROM posts WHERE Date(added) = '$date'; 
+0

シンプルで効果的なソリューション。ありがとう –

0

は、あなたが知っておく必要があるいくつかのことをあります。

適切な形式で日付を入力する必要があります。これを行うには、DateTime :: createFromFormat関数またはstrtotimeを使用することをお勧めします。のは、それが文字列のstrtotime関数をタイムスタンプに変換することができ、それが(FALSE NOT)可能であるならば、それはDBが処理できる形式にそれを変換するかどうかをチェックするsimplier道(のstrtotime)

<?php 

$parsedDate = strtotime($_GET['date']); 

if (false !== $parsedDate) { 
    $date = date('Y-m-d H:i:s', strtotime($_GET); 
    $rows_sql = "SELECT id FROM posts WHERE added = '$date'"; 
} else { 
    die("date is in wrong format"); 
} 

BasiclyでそれをやってみましょうYYYY- mm-dd hh:mm:ss

いくつかの期間から選択したい場合は、> <とBETWEENのような演算子を使用すると便利な場合があります。たとえば、あなたがGET日付パラメータ

if($date = strtotime($_GET['date'])) { 
     $today = date('Y-m-d', $date); 
     $rows_sql = "SELECT id FROM posts WHERE added BETWEEN '$today 00:00:00' AND '$today 23:59:59'"; 
    } 
関連する問題