【问题标题】:PDO Statement not returning resultPDO 语句不返回结果
【发布时间】:2014-04-14 11:04:35
【问题描述】:
$query = $db->prepare("SELECT * FROM coupons WHERE deleted = ? LIMIT ?, ?");
$query->bindValue("1", 0);
$query->bindValue("2", 2);
$query->bindValue("3", 5);
    try{
        $query->execute();
        $result = $query->fetchAll();
        return $result;
    }catch(PDOException $e){
        die($e->getMessage());
}

不幸的是,这返回了一个没有行的结果(但一个空结果甚至没有错误),当我通过 phpmyadmin 运行这个 sql 查询时,它获取了多行。 任何建议都会很有帮助。我过不去。

【问题讨论】:

  • 您是否配置过 PDO 以抛出异常?默认情况下不会。
  • 这行得通。这太愚蠢了,我浪费了 2 个小时。 :\ 谢谢老兄。
  • 请尝试关闭问题,方法是选择一个合适的答案或编写您自己的答案并选择它作为答案
  • 我将不得不等待 2 天才能做到这一点。

标签: php mysql sql pdo


【解决方案1】:

对这个问题的第一条评论对我很有帮助:Here

并解决了我的问题。上面提到的所有上述建议都已尝试过,但没有奏效。

【讨论】:

    【解决方案2】:

    尝试这样使用

    <?php
    $query = $db->prepare("SELECT * FROM coupons WHERE deleted = :deleted LIMIT :limit, :offset");
    $query->bindValue(":deleted", 0);
    $query->bindValue(":limit", 2);
    $query->bindValue(":offset", 5);
        try{
            $query->execute();
            $result = $query->fetchAll();
            return $result;
        }catch(PDOException $e){
            die($e->getMessage());
    }
    ?>
    

    【讨论】:

    • 他为什么要试试?
    • 但是应该修复什么?这段代码解决了什么问题?
    【解决方案3】:

    bindValue 需要一个整数,以防您使用问号作为活页夹 而不是您提供的字符串:

    $query = $db->prepare("SELECT * FROM coupons WHERE deleted = ? LIMIT ?, ?");
    $query->bindValue(1, 0);
    $query->bindValue(2, 2);
    $query->bindValue(2, 5);
        try{
            $query->execute();
            $result = $query->fetchAll();
            return $result;
        }catch(PDOException $e){
            die($e->getMessage());
    }
    

    或者干脆这样做:

    $query = $db->prepare("SELECT * FROM coupons WHERE deleted = ? LIMIT ?, ?");
    $binds = array(0,2,5);
        try{
            $query->execute($binds);
            $result = $query->fetchAll();
            return $result;
        }catch(PDOException $e){
            die($e->getMessage());
    }
    

    【讨论】:

    • 防守正确,编辑为他添加了解释。
    • 在默认仿真模式下,您的两个变体实际上都将失败,而不是求解。
    猜你喜欢
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2014-09-15
    相关资源
    最近更新 更多