Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的pdo语句结果总是返回true?_Php_Pdo - Fatal编程技术网

Php 为什么我的pdo语句结果总是返回true?

Php 为什么我的pdo语句结果总是返回true?,php,pdo,Php,Pdo,我正在将一个旧的登录脚本从mysql_查询转换为pdo,我有些挣扎 我所要做的就是找出数据库中是否存在电子邮件 我的代码 public function doesEmailExist($userEmail) { $db = new PDO('mysql:host=localhost;dbname=servershop', 'user', 'pass'); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION

我正在将一个旧的登录脚本从mysql_查询转换为pdo,我有些挣扎

我所要做的就是找出数据库中是否存在电子邮件

我的代码

public function doesEmailExist($userEmail)
{

    $db = new PDO('mysql:host=localhost;dbname=servershop', 'user', 'pass');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $db->prepare("SELECT COUNT(`uid`) FROM `user` WHERE `email`= ?");
    $stmt->bindValue(1, $userEmail);

    try
    {

        $stmt->execute();
        $rows = $stmt->fetchColumn();

        if($rows == 1)
        {
            return true;
        }
        else
        {
            return false;
        }

    }
    catch (PDOException $e)
    {
        die($e->getMessage());
    }
}
无论电子邮件是否存在于表中,代码总是返回true

有没有一种简单的方法可以像在sql中计数行那样进行此操作?

更改此方法:

$rows = (int) $stmt->fetchColumn();

它应该可以工作。

您是否尝试过var_dump$行以查看您得到了什么?您是否可以发布旧的、正在运行的MySQL代码,以便与新代码进行比较?@Niet string“0”length=1Okay,现在无论您在何处调用此函数,请将其设置为var_dump$this->DoeSmailexist$userEmail或similar@Phil很抱歉它消失了:-但这是您的基本选择*从表中,条件集->nou_of_rows=mysql_num_rows$result;C:\Users\Niet>php-r var_dump'0'==1;打印布尔法尔斯-我反驳你的说法,如果你做'0'==1,它将是true@Henrique,不管符号是什么,你的实际答案就像一个符咒:-是的,这很奇怪。我在家的时候会做一些测试来找出为什么会这样。。。