使用PHP 5.1.6,PDO查询不返回任何内容

时间:2013-12-11 08:35:09

标签: php pdo sqlite

我有这个PHP代码:

    <?php
    if (!extension_loaded('PDO')) {
        dl("pdo." . PHP_SHLIB_SUFFIX);
    }

    if (!extension_loaded('pdo_sqlite')) {
        dl("pdo_sqlite." . PHP_SHLIB_SUFFIX);
    }

    function ejecutar_sqlite($consulta, $bbdd) {
        $dsn = "sqlite:$bbdd";
        echo $dsn . "\n";
        try{
            $dbh = new PDO($dsn);
            $resultado=$dbh->query($consulta);
        } catch (PDOException $e) {
            print "Error!: " . $e->getMessage();
            die();
        }
        if(empty($resultado)) echo "EMPTY!!! \n";
        return $resultado;
    }

    $filas = ejecutar_sqlite('select * from test', '/home/sqlite/bbdd/testbbdd')
    foreach($filas as $f){
        echo $f[id] . "|" . $f[name];
    }

    ?>

此外,我在服务器的不同文件夹上安装了两个不同版本的PHP(5.1.6和5.2.9)(长篇故事......)。

我的问题是,当我在5.1.6版本上运行此代码时,PDO查询什么都不返回,但是当我在5.2.9版本上执行它时,它运行正常。我需要解决这个问题,因为我无法使用5.2.9版本来运行它。

PDO和pdo_sqlite模块已经安装并添加到“php.ini”(它在创建PDO对象或运行查询时没有显示任何错误或异常,它只是不返回查询中的预期值)。

知道问题出在哪里?

1 个答案:

答案 0 :(得分:0)

这是一个错误。对于今天,PHP v =&gt; 5.1.6与PDO存在一些问题。例如:

如果您正在运行PHP 5.1.6并且刚刚开始使用PDO进行数据库连接,那么很可能会遇到一个非常烦人的错误。 让我们测试一个部分取自PHP文档的简单查询。

$calories = 150;
$colour = 'red';
$sth = $myPDO->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
if ($sth->rowCount() >= 1) {
    // iterate through results
}

一切似乎都很棒。问题是$ sth-&gt; rowCount()将始终返回0.无论查询返回多少结果,rowCount()的值将始终为0.

解决方案是创建我们自己的简单PDO和PDOStatement类。 类myPDO扩展了PDO { //你的代码

希望,这会有所帮助