PHP中的其他部分不打印

时间:2012-12-22 13:54:02

标签: php mysql database if-statement

我正在尝试使用IF ELSE Con​​dition

在PHP中使用Mysql执行一个简单的程序

我的代码正在执行IF部分但不执行Else

请帮帮我  这是我的代码

<?PHP


$userInputEntities = htmlentities($userInput);
echo $userInputEntities;

$username = "admin";
$password = "1234565";
$database = "tele";
$server = "localhost";
$db     = new PDO (
    "mysql:host=$server;dbname=$database", 
    "$username", 
    "$password");
$id     = $_REQUEST['cid'];
if ($db) {
    $SQL = $db->prepare("SELECT * FROM user WHERE uid = :id");
    $SQL -> execute(array(':id'=>$id));
    while ($row = $SQL->fetch(PDO::FETCH_ASSOC)) {
        if ($id=="$row[uid]") {
            echo "Welcome";
        } else {
            echo "Sorry You Have not registered with our service";
        }
    }
}

&安培; 我的数据库表是'用户'

  uid           name
   1            Manoj
   2            pranay   only two rows i have in table

如果用户输入在表中可用,那么它应该打印如果部分,如果用户没有找到,那么它应该打印其他部分 请帮帮我,谢谢你

此处如果在IF条件满足时打印部件但在If条件失败时不打印其他部件

2 个答案:

答案 0 :(得分:2)

如果您的查询返回空集,则不会执行整个while块(如果DB中没有给定id的用户)。因此,在此块中放置else是没有意义的:如果输入while正文,$id将始终等于$row['uid'] - 这是WHERE子句中设置的条件记住。

您需要检查行数,并根据该行分支代码,用以下内容替换整个while块:

$sql = $db->prepare("SELECT * FROM user WHERE uid = :id");
$sql->execute(array(':id'=>$id));
if ($sql->rowCount()) { 
  echo "Welcome";
}
else {
  echo "Sorry, you Have not registered with our service";
}

另一种方法是更改​​查询(SELECT COUNT(*) ...),这样它将返回计数而不是整行,并检查其值是否为0。

答案 1 :(得分:0)

看起来像:

$_REQUEST['cid']

解析与:

相同
"$row[uid]"

对于每次通话,这意味着其他条件(第一次不等于第二次)从未得到满足。

在这些情况下,当我不确定它们的值是什么,或者我是否想要比较它们以查看我的代码是否按预期工作时,我喜欢回显变量的值。这样你就可以明确地看到两个变量的比较结果。