0

event_id 列とcheduled_at 列を持つデータベース テーブルがあります。クエリはphpで呼び出され、次のようになります。

$columnName = 'scheduled_at';
$start = '2013-02-26';
$end = '2013-02-27';
// query to be executed
$sql = ( SELECT * FROM $table WHERE $columnName BETWEEN $start AND $end );

クエリは実行時に機能しませんが、以下は機能します

$sql = ( SELECT * FROM $table WHERE $columnName BETWEEN $start AND '2013-02-27' );

$sql = ( SELECT * FROM $table WHERE $columnName BETWEEN $start AND $start );

動作しませんが、以下は動作します

$sql = ( SELECT * FROM $table WHERE $columnName BETWEEN '2013-02-27' AND '2013-02-27' );

値を手動で挿入すると機能しますが、関数の有用性が失われます。うまくいかない理由はありますか?

4

1 に答える 1

1

作成される SQL 文字列に日付値の前後の引用符が含まれるように、変数を引用符で囲む必要があります。例えば

$sql = "( SELECT * FROM $table WHERE $columnName BETWEEN '$start' AND '$end' )";
于 2013-02-26T11:03:12.023 に答える