-3

我正在尝试使用 IF ELSE 条件在 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 条件满足时,如果部分正在打印,但在如果条件失败时不打印 else 部分

4

2 回答 2

2

while如果您的查询返回空集(如果数据库中没有用户使用给定的 ),则不会执行整个块id。所以放在else这个块中是没有意义的:如果while输入了body,$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 检查其值。

于 2012-12-22T13:58:04.503 回答
0

看起来像:

$_REQUEST['cid']

解决方法同:

"$row[uid]"

对于每个调用,这意味着永远不会满足 else 条件(第一个不等于第二个)。

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

于 2012-12-22T14:01:43.033 回答