2014-07-24 207 views
0

我知道這是一個非常基本的問題,但我完全在我的智慧結尾。我一直在爲此工作兩天。 if語句總是返回false。我已經嘗試過===和==,並將其複製到$ array並在獲取$ result循環之外進行處理。我比較了一個直接的「名稱」。我已經輸出了返回字符串的每個字母的ASCII值,並且比較這種方式以確保我沒有在某處放置空間或某物。我試過mysql和mysqli方式。我已經嘗試過OO風格和程序風格,但這裏是蹭,這段代碼是從我自己的網站複製和粘貼,它在我的網站中的其他三個程序中工作得很好。PHP如果語句總是返回false

<?php 
SESSION_START(); 
if(!isset($_SESSION["uname"])){ 
require ('redirect.html'); 
die(); 
}// session is set close 
$uname = $_SESSION["uname"]; 

$user_name = "xxxxxx"; 
$password = "xxxxxxx"; 
$database = "usersdata"; 
$server = "xxxxxxxxxx.ipagemysql.com"; 


$db_handle = mysql_connect($server, $user_name, $password); 
$db_found = mysql_select_db($database, $db_handle); 

if ($db_found) { 

$SQL = "SELECT * FROM messages"; 
$result = mysql_query($SQL); 

while ($db_field = mysql_fetch_assoc($result)) { 

//echo out values for visual comparison 
echo $db_field['recipient']." ".$uname." "; 

if($db_field['recipient'] === $uname){echo " match ";} else {echo " no match ";} 

}// while loop db_field close 
}// if db_found loop close 

mysql_close($db_handle); 

?> 

正如我所說的這個代碼在這個網站上運行的其他三個程序工作得很好。我所做的只是複製粘貼並更改數據庫和字段。我甚至試圖從頭開始重新輸入,以確保。幫助我我正在融化....

+0

echo $ db_field ['recipient']。「」。$ uname。「」;'? – Sadikhasan

+0

'SESSION_START();'<= **必須**小寫'session_start();' –

+0

Nope @ Fred-ii-沒關係。 PHP函數名稱不區分大小寫。 –

回答

2

爲什麼你會返回所有消息,然後與每個消息進行比較,如果名稱匹配。您可以簡單地在查詢中添加where子句

SELECT * FROM messages WHERE recipient='uname value here' 

然後您可以檢查返回的行數。如果返回0行,則不匹配。

+0

'WHERE'子句很有意義,因爲OP沒有任何東西(列)匹配。 –

+0

是的,這代碼就像買了10000個蘋果只是回家,拿起一個125.10克的。爲什麼不把這個規格告訴店主,只購買那個。 –

+0

說得對。另外,所需要的只是一個糟糕的蘋果而毀了它;-) –