2012-11-15 85 views
0
while ($row=$resultzero->fetch_assoc()) { 
    $cashset = $row['cashset']; // value 0 
    $scash = $row['scash']; // value 0 
    $ecash = $row['ecash']; // value 0 
    $current = $row['current']; // value 0 
} 
if ($cashset = 0 && $scash = 0 && $ecash = 0 && $current = 0) { 
    $firstTime = 1; // var_dump($firstTime) = NULL 
} else { 
    $firstTime = 0; // var_dump($firstTime) = NULL 
} 

我試着將IF語句改爲double ==和triple ===,並引用它並單引號,沒有任何工作將$ firstTime作爲1或0返回。我不確定發生了什麼。 MySQL列都設置爲整數,所以這不應該成爲問題。它爲我分配的所有變量返回0值,因爲它們在數據庫中都設置爲0。任何建議都會很棒。簡單的MySQL返回意外的值?

回答

0

首先,首先初始化你的變量。以防萬一。

$cashset = 0; 
$scash = 0; 
$ecash = 0; 
$current = 0; 

然後運行循環

while ($row=$resultzero->fetch_assoc()) { 
    $cashset = $row['cashset']; // value 0 
    $scash = $row['scash']; // value 0 
    $ecash = $row['ecash']; // value 0 
    $current = $row['current']; // value 0 
    // DEBUG 
    print "Read row: ($cashset,$scash,$ecash,$current)\n"; 

}

然後使用比較,因爲你已經嘗試過(不知道爲什麼它沒有工作 - 我打賭它有是與缺失的初始化)

if ((0 == $cashset) && (0 == $scash) && (0 == $ecash) && (0 == $current)) 
{ 
    $firstTime = 1; // var_dump($firstTime) = NULL 
} else 
{ 
    $firstTime = 0; // var_dump($firstTime) = NULL 
} 

(0 == $variable)代替($variable == 0)爲COMPAR isons是我的寵物魔術,所以如果你錯誤地忘記了=號,它將確保你得到一個錯誤,而不是指令成爲一項任務。

另外,請確認您沒有檢索多於一行,因爲最後一行會覆蓋第一行。上面的代碼在加載出於調試目的時轉儲每一行以進行屏幕顯示。

+0

@Iserni。你的過程使我能夠找到錯誤所在的位置。我非常感謝你在閱讀OP時的努力,並且在我已經嘗試過時沒有顯示比較。在調用var_dump之前,我重新初始化了一些變量,並且這些值在那個時候丟失了。 – smada

+0

不客氣。下次雖然,發佈*所有*的代碼;-) – LSerni

4
if ($cashset = 0 && $scash = 0 && $ecash = 0 && $current = 0) { 
      ^==  ^==  ^==   ^== 

不分配,比較。

它不可能返回NULL,因爲它必須採用由if..else指定的路徑之一。您正在測試錯誤的變量,或者您正在測試錯誤的地方

+0

關於OP,我已經嘗試過單個和雙重==。 – smada

+0

@ user1718270您需要檢查'$ cashset'和其他單個值。 'var_dump'他們。另外,如果在轉儲時正確地拼寫變量,請注意'var_dump($ firstTime)'。 –