2014-07-24 162 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

说得对。另外,所需要的只是一个糟糕的苹果而毁了它;-) –