-1

私はこのコードを書いています:

$dateQueried = '2013-03-18';
$reservQuery = "SELECT * FROM bkng WHERE ArrivalDate <= '$dateQueried' AND DepartureDate > '$dateQueried'";
$rsrv = mysql_query($reservQuery) or die(mysql_error());
$resRow = mysql_fetch_row($rsrv);
$DateIn = strtotime($resRow["ArrivalDate"]);
$DateOut = strtotime($resRow["DepartureDate"]);
$dateQueried = strtotime($dateQueried);
if ($DateIn = $dateQueried) {
echo 'case 1';
} elseif ($DateIn < $dateQueried) {
echo 'case 2';
} else {
echo 'case 3';
}

問題は、ケース 2 またはケース 3 に入ることができないことです...私が見逃しているものはありますか?

私は変数を印刷しようとし、それらをvar_dump(): の外側に入れてみました。たとえば、「String(10) '2013-03-18'」を返す場合は、「NULL」を返す場合は挿入します...

4

4 に答える 4

3

間違った演算子を使用しています。を使用することで、常に true である=値を割り当て、常にそのコード ブロックを実行させます。$dateIn

if ($DateIn = $dateQueried) {

する必要があります

if ($DateIn == $dateQueried) {
于 2013-03-13T15:18:42.137 に答える
2
if ($DateIn = $dateQueried) {

間違っています、それは割り当てです。そのはず

if ($DateIn == $dateQueried) {
于 2013-03-13T15:19:10.393 に答える
1

=は比較演算子ではなく、代入演算子です。割り当ては常に成功するため、実際に常に truecase 1であるため、常に outputs になります。

比較のために for を=変更するだけです。==

if ($DateIn == $dateQueried) {
于 2013-03-13T15:19:34.850 に答える
-3
  1. var_dump($dateQueried, $DateIn, $resRow["ArrivalDate"]);
  2. 考え。
  3. それ == 誰もが言及したこと
  4. コードのデバッグ方法を学ぶ
于 2013-03-13T15:21:04.377 に答える