Php 函数在一种情况下给出正确答案,而不是在任何其他情况下给出正确答案

Php 函数在一种情况下给出正确答案,而不是在任何其他情况下给出正确答案,php,mysql,database,pdo,return,Php,Mysql,Database,Pdo,Return,下面是我正在使用的函数。这很奇怪,因为当我测试名称admin时,它会返回一个包含所有正确列和值的关联数组,但就我所知,每一个其他名称测试都会返回0,这意味着从查询中找不到任何内容。我输入的名称与数据库中的名称完全相同 我有一种感觉,这可能是pdo的某种安全特性或其他东西,但我不明白它为什么会这样 我正在使用mysql 有人知道这个问题以及如何解决它吗?谢谢大家! function getUserDetailsByName($name, $fields = "*") { $db =

下面是我正在使用的函数。这很奇怪,因为当我测试名称admin时,它会返回一个包含所有正确列和值的关联数组,但就我所知,每一个其他名称测试都会返回0,这意味着从查询中找不到任何内容。我输入的名称与数据库中的名称完全相同

我有一种感觉,这可能是pdo的某种安全特性或其他东西,但我不明白它为什么会这样

我正在使用mysql

有人知道这个问题以及如何解决它吗?谢谢大家!

function getUserDetailsByName($name, $fields = "*")
{   
    $db = connect_db();

    $query = "SELECT $fields FROM UserDetails WHERE userName=:username";
    $result = $db->prepare($query);
    $result->bindParam(":username", $name);

    if (!($result->execute())) {
        sendMessage (1,1,'Query failed',$query);
        $db = null;
        return;
    }
    if (!($result->fetch(PDO::FETCH_NUM) > 0)) {
        $db = null;
        return 0;
    }else{
        $result = $result->fetch();
        $db = null;
        return $result;
    }   
}
编辑:有人问我如何调用函数

$user = getUserDetailsByName($_POST['value']);
if($user == 0)
{
  print "user = 0";
}
print_r($user);
为什么要两次?签出并将其与代码进行比较

这样使用:

if($user = getUserDetailsByName($_POST['value'])){
    // we have a user!
}else{
    // we don't have a user!
}

请说明如何调用该函数!而且,结尾的else是没有意义的。这不像以前的if+返回会超出返回值。啊哈,我没意识到它会两次获取最高值,我现在编辑这个,看看它是否有区别。尽管我很好奇它是如何使用一个名称而不是另一个名称的?@AndrewB Duplicate DB records?:admin在其中有两次。@AndrewB还请记住限制1部分。当您知道您只需要一条记录时,如果MySQL也知道这一点,那么它会有很大帮助。
if($user = getUserDetailsByName($_POST['value'])){
    // we have a user!
}else{
    // we don't have a user!
}