2013-03-13 112 views
-1

我寫這篇文章的代碼:PHP的問題與日期

$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():如果它返回例如「字符串(10)'2013-03-18'',而如果它返回如果它返回」NULL「外...

回答

3

您正在使用錯誤的操作符。通過使用=,您將值分配給$dateIn,該值始終爲true,並始終會導致該代碼塊執行。

if ($DateIn = $dateQueried) { 

應該

if ($DateIn == $dateQueried) { 
+0

好,謝謝......這只是一個錯字。我覺得很愚蠢 - - – Mark 2013-03-13 16:20:04

+0

誰會投票支持解釋這個問題? – 2013-03-13 17:36:28

2
if ($DateIn = $dateQueried) { 

是錯誤的,它的分配。它應該是

if ($DateIn == $dateQueried) { 
1

=不是比較運算符,它是賦值運算符。分配總是成功的,因此它總是輸出case 1,因爲它的確總是如此。

您應該簡單地將=更改爲==作比較。

if ($DateIn == $dateQueried) { 
-3
  1. var_dump($dateQueried, $DateIn, $resRow["ArrivalDate"]);
  2. 思考。
  3. 這==大家的事情提到
  4. 學會調試代碼
+0

我知道如何使用var_dump()... – Mark 2013-03-13 16:59:58

+0

@ l736k他的答案都是這樣的。不要讓他分心並尋找其他答案。祝你好運! – shnisaka 2013-03-13 18:10:13