php – 如何在PDO中加载sqlite扩展?

前端之家收集整理的这篇文章主要介绍了php – 如何在PDO中加载sqlite扩展?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,我想通知案件,以避免误解.

通过sqlite扩展,我提到了sqlite的扩展,如FTS,而不是PHPsqlite扩展.

我一直在我的应用程序中使用PDO sqlite,它无法更改.

在我看到here时,可以加载sqlite扩展,如下所示:

SELECT load_extension('xyz.so');
$db = new PDO ( 'sqlite:qwert.db' );
$db->query("SELECT load_extension('myextension.so');");
$db->query("SELECT myfunction(name) FROM table");
$rows = $db->fetchAll(PDO::FETCH_CLASS,'stdClass');

注意:myfunction是myextension的方法

但是,当我使用PDO中的此查询进行测试时,它会返回“未授权”消息.

仅出于测试目的,我尝试使用以下代码加载扩展程序:PHP’s Sqlite3 extension

$db = new sqlite3('qwer.db');
$db->loadExtension('xyz.so');

有用

据我所知,PDO sqlite没有像loadExtension这样的方法来加载扩展

知道怎么处理这个?

找不到编译器标志,我们已经用pdo_sqlite扩展中的quick’n脏黑客解决了它.使用sqlite3 API中的sqlite3_enable_load_extension()修补sqlite_driver.c.
--- PHP-5.3.7.old/ext/pdo_sqlite/sqlite_driver.c    2012-01-06 11:04:44.000000000 -0500
+++ sqlite_driver.c 2012-01-06 08:16:58.000000000 -0500
@@ -718,6 +718,8 @@
        goto cleanup;
    }

+   sqlite3_enable_load_extension(H->db,1);
+
    if (PG(safe_mode) || (PG(open_basedir) && *PG(open_basedir))) {
        sqlite3_set_authorizer(H->db,authorizer,NULL);
    }

希望这可以帮助…

原文链接:https://www.f2er.com/php/133901.html

猜你在找的PHP相关文章