2013-05-16 15 views
0

我看到了一個看起來可能會解決的答案,但它看起來並不像看起來那麼有希望,因爲一切似乎都表明我的代碼很好。我試圖創建一個動態頁面,在其中加載某些信息,如果滿足某些條件。除了我的進度部分,一切都顯示出來並且工作正常。有人能告訴我爲什麼這不起作用嗎?詢問一個值是否與另一個值不一樣,並且在if語句中總是回答true

<? php require_once("session.php"); ?> 
<? php require_once("connection.php"); 
$email = $_SESSION['email']; 
$query = mysql_query("SELECT * FROM progress WHERE email = '$email'"); 
$row = mysql_fetch_array($query); 
if ($row['admin'] == 0) { 
    echo... 

然後,它呼應了我的網頁與動態內容,如果該值在底部返回true,將其重定向到管理管理頁面。

if ($row['progress'] !== 100) { 
    $contract = $row['location']; 
    $progress = $row['progress']; 
    $mockup = $row['mockup']; 
    echo "<a href=\"customer.php\">Contact</a><br />"; 
    echo "<a href=\"$contract\">View Contract</a><br />"; 
    echo "<a href=\"$mockup\">View Mock Up</a><br />"; 
    echo "<p>Progress: " . $progress . "%</p>"; 
} 

該值總是顯示數據庫中的數字不是100,即使頁面回聲說它已完成100%。這是一個問題,因爲下一階段是付款階段,但每當它說明它是真實的時候它都不會加載。

+7

100!=='100'。 '$ row ['progress']'包含一個整數還是一個字符串? –

+0

它包含一個整數 – Bunnie

回答

4

您正在做一個類型安全的比較,即您正在檢查以確保$row['progress']100而不僅僅是相同的值,但是相同的類型。

來自數據庫的值始終是字符串,而100是一個整數。

檢查數據庫值是否與數字值爲is_numeric然後使用intval然後執行類型安全比較。

+0

_「來自數據庫的值始終是字符串」_ => [對於PDO ...而言,並非總是如此(http://stackoverflow.com/a/1197041/358679) – Wrikken

+0

但他沒有使用PDO ... –

+1

我知道,只是指出這不是一般性聲明,所有數據以任何方式排列都是字符串,因爲它可能會被誤解(其他人則是OP可能在尋找答案時找到這個答案,認爲這是對他們友好的腳註,我並不反對你)。對於'mysql_' AFAIK,你是絕對正確的。 – Wrikken

相關問題