長い間私を混乱させてきた単純な質問
$nian = 1990;
$a = ($nian-1);
$b = ($nian+1);
$query = "SELECT * FROM `final` WHERE `writedate` <'$b' and 'writedate'>'$a'";
$result = mysql_query("$query");
$row = mysql_fetch_array($result );
print_r($row);
このように書くとクエリのたびに何も出力されなくなります。 = "SELECT * FROM `final` WHERE `writedate` <'($nian+1)' and 'writedate'>'($nian-1)'";
$result = mysql_query("$query " );
$row = mysql_fetch_array($result);
print_r(row);
writedate は date 型ですが、前のフィールドは tinyint 型でした。問題は次のとおりです。 $a = ($nian-1) などの格納される変数と、$nian-1 などの直接の加算および減算の違いは何ですか?
<🎜; >
--- ---解決策------------------------
`writedate` <'($nian+1)' '($ nian+1)' は文字列ですが、どのように操作できますか
------解決策----------------------
$query = "SELECT * FROM `final` WHERE `writedate` <'($nian+1)' および 'writedate'>'($nian-1)'";このように書かれた ($nian+1) はまったく解析されません
------解決策----------------------
SQL ステートメントは...1990+1 になりました。 ..1990 -1... 予想どおり 1991 1989 ではなく、よく考えてください
------解決策---------
補足: ` WHERE ` writedate` <'($nian+1)' と 'writedate'>'($nian-1)'";
これに変更すると、 ` WHERE `writedate` <($nian + 1) と 'writedate'>($nian-1)"; は期待どおりの結果を取得できます
余分な '' は括弧と一緒に文字列全体として扱われます。
------解決策-----
次のように SQL ステートメント内の操作を減らしてみます。 CanPHP コード
のような
$query = "SELECT * FROM `final` WHERE `writedate` <'".($nian+1)."' and 'writedate'>'".($nian-1)."'";
ディスカッション