2013-12-18 28 views
4

我試圖建立一個成員系統,您可以在其中查看數據庫中的某些值。 它的工作,所以這是偉大的,但我現在有一個問題,因爲我在'年齡'使用NULL值。如何使用IF NULL,在MySQL中執行此操作?

在查看個人資料頁,它看起來像這樣:

$id = $_GET["id"]; 

$result = mysql_query("SELECT * FROM membersfromsite WHERE `idofmember`=$_GET[id]"); 
$row = mysql_fetch_array($result); 

echo "<b>" . $row['userusername'] . "</b>: </p>"; ?> 

<?php 

$id = $_GET["id"]; 

$result = mysql_query("SELECT * FROM membersfromsite WHERE `idofmember`=$_GET[id]"); 
$noage = mysql_query("SELECT ISNULL([age]) FROM membersfromsite WHERE   `idofmember`=$_GET[id]"); 

while ($row = mysql_fetch_array($result)) 
{ 
    echo "<p class='middle'>id-number: " . $row['idofmember'] . "<br>"; 
    echo "Username: " . $row['userusername'] . "<br>"; 
    if ($noage) 
    { 
    echo "Age not specified"; 
    } 
    else 
    { 
    echo "Age: " .$row['age'] ; 
    } 
} 

我已經嘗試了各種其他的東西,但我的問題「,m具有的是,它要麼返回‘沒有規定年齡’上每userpage或每userpage年齡,包括NULL值的頁面,這使得它看起來像:

年齡:

,你可以看到上面的代碼返回每一頁上的年齡,包括網頁年齡被設置爲NULL。我不明白的是,如果我將代碼更改爲:

$noage = mysql_query("SELECT * FROM membersfromsite WHERE `idofmember`=$_GET[id] AND age IS NULL"); 

它根本不起作用。由於我使用的是IS NULL而不是= NULL我不明白爲什麼這不應該起作用,但我想它與IF有關,它是'while'事件中的一部分,我真的不知道其他的這樣我可以,雖然解決這個問題...

我有一個想法是什麼問題,因爲我覺得已經有一個MyQS,查詢與結果和$noage做,因爲這可能會被忽略,但我不不知道如何解決這個問題。

+0

順便說一句,請參閱[如何防止SQL注入的PHP?](http://stackoverflow.com/questions/60174/how-can-i-prevent -sql -injection-in-php),然後再將此代碼放入您的網站。 –

回答

1

你不需要做一個單獨的$ noage查詢。

只要做到:

if(!$row['age']) 
{ 
echo "Age not specified"; 
} 
else 
{ 
echo "Age: " .$row['age'] ; 
} 
0

代替if($noage)使用if(!$row['age']),跳過第二個查詢。

你的代碼不起作用的另一個原因是第二個查詢返回一個類似array('expr1' => 0)的數組,這不是錯誤的。如果沒有發現,你只會得到一個錯誤的結果。

= NULL不能正常工作的原因?有些書是關於它的,它就像它一樣。

+0

是的,我已經知道= NULL不起作用。我已經在某處讀到了爲什麼但找不到它,稍後我會詳細閱讀。 – Blogger

0

不用依賴MySQL來告訴我們是否沒有找到年齡,我們可以通過編程的方式確定PHP的年齡值是否爲空。

下面是一個例子:

$id = $_GET['id']; 
$result = mysql_query("SELECT * FROM membersfromsite WHERE `idofmember` = '" . mysql_real_escape_string($id) . "'"); 

while($row = mysql_fetch_array($result)) { 
    echo '<p class='middle'>id-number: ' . $row['idofmember'] . '<br>'; 
    echo 'Username: ' . $row['userusername'] . '<br>'; 
    if($row['age'] === Null) { 
    echo "Age not specified"; 
    } else { 
    echo "Age: " .$row['age'] ; 
    } 
} 
+1

我還沒有試過這個。如果我看看這段代碼,我想它和Digital Chris的代碼一樣,但是謝謝你的回答,現在我可以在將來使用它。知道SQL是非常方便的,幾天前剛開始學習它。 – Blogger