当前位置: 首页 > 面试题库 >

当PDO中没有行时返回值

施自怡
2023-03-14
问题内容

我有一个PDO功能:

function(){
    $success=$this->query($query, $bindvalues);

    return ($success == true) ? $this->stmt->fetch(PDO::FETCH_ASSOC) : false;
}

当我执行选择查询以返回一行(或更多)时,它将返回例如:

array(1) { ["Id"]=> string(1) "1" }

当查询失败时(例如,如果我使用错误的语法),它将返回FALSE。

但是,如果在查询中未找到任何行,则它还会返回FALSE。

因此,查询中有错误且没有行的返回值都将返回FALSE。那怎么可能?仅当查询中有错误时,我才需要返回FALSE,例如,当没有结果时,我就需要返回NULL。我的功能有问题吗?

谢谢!


问题答案:

如果未找到任何行,则PDO :: fetch返回false。这是事实。因此,更改您的功能:

function(){
    $success = $this->query($query, $bindvalues);
    if(!$success) {
        //handle error
        return false;
    }
    $rows = $this->stmt->fetch(PDO::FETCH_ASSOC);
    return $rows ?: null;
}


 类似资料:
  • 问题内容: 更新2: 那么这是它可以获得的最优化的吗? 更新1: 我知道我可以给sql查询增加限制,但是我也想摆脱foreach循环,这是我不应该需要的。 原始问题: 我有以下脚本,由于“ foreach”部分的缘故,它是从数据库返回许多行的良好IMO。 如果我知道我将总是只从数据库中获得1行,该如何优化它。如果我知道我只会从数据库中获得1行,我不明白为什么需要foreach循环,但是我不知道如何

  • 问题内容: 我正在做一些测试,当我查询一个表时,这是一个惊喜,查询返回了表中的所有行。 该表没有‘0’值,并且使用常规电子邮件填充。 为什么会这样?这会导致严重的安全问题。 有没有一种方法可以避免这种情况而无需修改查询? 我在这里想念什么吗? 谢谢。 问题答案: 这是因为它将电子邮件字段(我认为是varchar字段)转换为整数。任何没有有效整数的字段都将等于0。您应确保仅将字符串字段与字符串值进行

  • 我在做一个基于线性探测的自定义哈希表,在C 11中,我在其中做了一个函数,函数应该返回哈希表中对应键的值,这是我的代码: 问题是,传递的每个键在哈希表中可能没有对应的值。在这个函数中,我无法获得如何处理这个异常。处理这个异常的可能方法是什么?C STL

  • 问题内容: 我在查询中发现了一些问题,该查询从表中返回满足特定条件的所有记录的字段总和。当没有记录时,我希望收到“找不到记录”,但我收到的是空结果。 在这种情况下,有什么方法可以不接收任何记录? 问题答案: 这个怎么样:

  • 问题内容: 我有2张桌子- : 第二张桌子- : 我只需要选择未取消的预订(在此示例中仅为ID 3)。我可以轻松地选择带有简单条件的已取消,但由于未在此处取消工作,因此我在努力避免未取消。 问题答案: 要么: 第一个版本更直观,但是我认为第二个版本通常可以获得更好的性能(假设您在联接中使用的列上有索引)。 第二个版本有效,因为返回第一个表中所有行的一行。当条件成功,这些行会包括从第二表中的列,就像

  • 我有这个存储过程。我的问题是当记录不存在于机构表是不返回任何东西。我想说即使没有记录在机构仍然返回,所以我已经添加了左外JOIN机构和_Agency=IsNull(U._Agency,")在顶部。但仍然不返回值。它是返回值时,我采取A._IsActive=1在最后一行出来。我该怎么办id A._IsActive没有值仍然返回。我尝试了相同的ISNull但不工作。