0

このカレンダープラグインを使用して、mySQL データベースを使用してクライアントの議題を表示しています。カレンダーは、次のような UNIX タイムスタンプstartを使用してスクリプトにリクエストを送信します。end

/getevents.php?start=1262332800&end=1265011200&_=1263178646
//That last piece of data is to prevent caching.. apparently

私のスクリプトでは、次のdatetimeように UNIX タイムスタンプを mySQL オブジェクトに変換します。

$start = $_GET['start'];
$end = $_GET['end'];
$start = gmdate("Y-m-d H:i:s", $start);
$end = gmdate("Y-m-d H:i:s", $end);
printf($start.".....".$end);

これにより、次のようなものが正しく出力されます (2012 年 9 月に移動すると)。

2012-08-26 04:00:00.....2012-10-07 04:00:00

ここで、これらの日付の間にあるすべてのイベントをデータベースから選択したいと考えています。私のデータベースには 1 行しかなく、startフィールドは今日の日付です。

 id     start                   end
 10     2012-09-05 20:27:00     0000-00-00 00:00:00

しかし、次の SQL ステートメントでは結果が得られません。私はそれの地獄の>ため<だけにを反転しようとしましたが、それでも何もしません。エラーはまったく発生していません。結果がありません。

$sql = "SELECT * FROM all_events WHERE DATEDIFF('$start', 'start') > 0";
$result = mysql_query($sql, $link) or die(mysql_error());
echo "Rows:".mysql_num_rows($result);

ご覧のとおり、現在start、イベントの日付がカレンダーの日付範囲より大きいことを確認していstartます。つまり、8 月 26 日はstart9 月の日付です。

何も問題はありません...助けてください!髪をかきむしる!

4

2 に答える 2

1

列名には使用せずsingle quotes、代わりにbackticks.try thisを使用してください

SELECT * FROM all_events WHERE DATEDIFF(`start`, '$start') > 0
于 2012-09-06T01:20:25.573 に答える
1

FROM_UNIXTIME次のような準備済みステートメントを使用することをお勧めします。

$stmt = $mysqli->prepare("SELECT * FROM all_events WHERE DATEDIFF(FROM_UNIXTIME(?), start) > 0"); 
$stmt->bind_param($_GET['start']);

mysql_関数は廃止されています

于 2012-09-06T01:23:22.653 に答える