var_dump和print_r什么都不显示,无法检查数据库中是否存在该项

时间:2016-01-22 13:16:04

标签: php pdo

我有一个PDO,它在数据库中查询不存在的用户来处理用户注册。问题是,如果找不到用户,var_dump和print_r都不会打印任何内容。

customer

这里发生了什么?该页面只是空白。

php -l index.php不会出现语法错误,页面也不会抛出错误500.

视图来源中没有任何内容。

以下是连接详情:

    try {
        $stmt->execute();
        while($row = $stmt->fetch()) {
            var_dump($row);
            print_r($row);
            if($row = null) { // Not working
            # if(!isset($row)) { // Not working
            # if(empty($row)) { // Also not working
                echo "User not found";
            } else {
                echo $row['realname']."<br>";
            }
        }
    } catch(PDOException $e) {
        echo "FATAL ERROR OCCURED:".$e->getMessage();
    }

2 个答案:

答案 0 :(得分:3)

它之所以不起作用,是因为你是&#34;分配&#34;在if($row = null)中使用1个等号,而不是&#34;比较&#34; if($row == null)有两个等号(或3&#34;如果相同&#34;,取决于你想要检查的内容)。

请参阅Stack上的The 3 different equals

参考文献:

PHP看到&#34;赋值&#34;作为有效的语法,这就是为什么你没有收到任何错误。

答案 1 :(得分:1)

原来我必须重新组织一下代码。

我将$row = $stmt->fetch();从while循环中取出,并单独检查$ row。像这样:

$stmt = $dbh->prepare("SELECT realname FROM users WHERE name = :name" );

$stmt->bindParam(":name", $name);

$name = "mivuckovaca"; // NOT IN DATABSE ON PURPOSE

try {
    $stmt->execute();
} catch(PDOException $e) {
    echo "FATAL ERROR OCCURED:".$e->getMessage();
}

$res = $stmt->fetchAll(); # Replaced fetch() with fetchAll()

if(empty($res)) {
    echo "User not found";
} else {
    foreach($res as $row) { # replaced while() with foreach()
        echo $row['realname'];
    }
}