我有这个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对象或运行查询时没有显示任何错误或异常,它只是不返回查询中的预期值)。
知道问题出在哪里?
答案 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 { //你的代码
希望,这会有所帮助