0

请帮忙。我还给出了下面的代码。尝试了很多东西。不工作。

选择了一个空间数据库:

     $db = new SQLite3('db2.sqlite');

尝试了这些负载扩展:

// $db->loadExtension('C:\PHP\ext\libspatialite-2.dll');
//   $db->loadExtension('libspatialite-4.dll');
//   $db->exec("SELECT InitSpatialMetadata()");

如果加载扩展被禁用,也尝试了这个功能:

// $db->exec("sqlite3_enable_load_extension(1)");
//   $tvalue=$db->loadExtension('C:\\PHP\\sqliteext\\libspatialite-4.dll');

在这里尝试加载扩展:

    $db->exec("SELECT load_extension('C:\\PHP\\sqliteext\\libspatialite-4.dll')");
    phpinfo();
    $result = $db->query("SELECT load_extension('libspatialite-4.dll')");


    var_dump($result->fetchArray());

试过这个查询:

    $result = $db->query('select astext(geometry) from roads');
    var_dump($result->fetchArray());

    $rs = $db->query('SELECT spatialite_version()');
4

1 回答 1

1

最常见的问题之一是使用“合并”构建的 libspatialite 版本,其中包括 sqlite。如果包含的 sqlite 版本与您用于加载 libspatialite 的版本不匹配,那么这是有问题的(尤其是在 64 位 Windows 上)。具有不同 ABI 的两个版本 = 崩溃。

我没有一个好的解决方案,但是您可以采取一些措施来避免这种情况: 1. 不要使用合并构建 2. 确保 sqlite 的两个版本相同。

于 2012-06-29T23:58:56.237 回答