我知道这是一个非常基本的问题,但我完全在我的智慧结束。我已经为此工作了两天。 if语句始终返回false。我已经尝试了===和==并复制到$ array并在fetch $ result循环之外进行处理。我比较直接的“名字”。我已经输出了返回字符串的每个字母的ascii值,并比较了这种方式以确保我没有在某处放置空格或某些东西。我尝试过mysql和mysqli方法。我已经尝试过OO风格和程序风格但是这里有一个问题,这个代码是从我自己的网站上复制并粘贴的,它在我网站的其他三个程序中运行得很好。
<?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 :(得分:2)
为什么要返回所有消息,然后在名称匹配时与每条消息进行比较。您只需在查询中添加where子句
即可SELECT * FROM messages WHERE recipient='uname value here'
然后您可以检查返回的行数。如果返回0行,则没有匹配。