2011-10-23 47 views
-2

我有一個MySql表。 我想檢查它在所有行中的特定字段。如果這個字段在任何行中都有特定的值,我希望PHP打印一些東西,如果任何行沒有這個值,那麼我希望PHP做其他事情。我想檢查一個字段的特定值的MySQL表的每一行由php

看看這個代碼:

$queryplus="SELECT * FROM comments WHERE id='$id' and comment='plus'"; 
$resultplus=mysql_query($queryplus) or die(mysql_error()); 
while($rowplus = mysql_fetch_array($resultplus)) 
{ 
    $email3=$rowplus['email']; 
    $fname3=$rowplus['fname']; 
    $lname3=$rowplus['lname']; 
    $email=$_SESSION['email']; 
} 

if ($email==$email3) 
{ 
    echo "UNPLUS"; 
} 
else 
{ 
    echo "PLUS"; 
} 

在這段代碼中,如果插入的最後一行有$電子郵件= $ EMAIL3那麼如果命令成功執行,並將其打印UNPLUS,但如果$電子郵件= $ EMAIL3是在除最後一行之外的任何其他行中都爲true,則該命令無法執行並打印PLUS。

請告訴我它有什麼問題。

注意:$ _SESSION ['email']是另一個表的電子郵件字段的值,該值具有由此刻登錄的用戶提供的值。

+3

我的眼睛都在流血。 – Tom

+4

任何爲什麼不讓SQL請求進行比較,只檢查返回值? – mario

回答

1

嘗試

$queryplus="SELECT * FROM comments WHERE id='".mysql_real_escape_string($id)."' and email='".mysql_real_escape_string($_SESSION['email']."' and comment='plus'";
+0

不完全由您的答案,但我得到了一個暗示,我應該怎麼做你的答案,並擺脫麻煩... – Muddser

5

您的while()正在獲取所有行並將它們分配給變量,然後不對該數據執行任何操作,直到循環完成後。這意味着你要獲取無數行,並且除了最後一行的數據外,還要拋出所有行。

您需要將您的if ($email ...)檢查while()循環中:

while($row = mysql_fetch_array($resultplus) { 
    ... assign variables ... 
    if ($email == $email3) { 
     yada yada 
    } else { 
     yada yada 
    } 
} 
+0

如果我這樣做,它會打印出我在回聲中使用的所有行...例如如果我打印出echo $ email3;那麼它顯示所有的電子郵件... – Muddser

相關問題