2016-03-15 43 views
0

我不明白sqlite3如何與自定義函數一起工作。只是我沒有得到如何添加任何自定義函數到數據庫。如何在PHP中實現SQLite的C用戶函數

我真的需要編譯我的機器下的C代碼文件,並使用生成的DLL(我在windows下)作爲一個sqlite擴展嗎?如果是這樣,那麼在其他操作系統(mac/linux ...)下使用此擴展如何?我知道SQLite是獨立於操作系統的,但...

我目前有:udf_xxx.c(不編譯),mysqlite3.db(填充);我在windows10上運行。

我打算使用php + sqlite,可能在linux下。我不能做一個自定義的SQLite構建。

主要問題是:如何在現有的sqlite3數據庫中實現UDF跨平臺?

+0

SQLite是一個*最小*和*有限*數據庫引擎。如果你想要任何種類的「企業」功能,你必須看看其他地方。 –

+0

這取決於你的意思是什麼_add任何自定義函數到database_。 – LPs

+0

@LPs:添加了示例代碼:在sqlite.org中使用全文搜索建議的簡單排名函數。 –

回答

0

使用C函數僅通過

  • 主叫sqlite3_create_function選自C,或通過
  • 創建DLL /共享庫,並與load_extension SQL函數動態加載是可能的。 由於安全原因,這是默認禁用的,很可能您的PHP沒有明確啓用它。

創建從PHP中可使用的用戶定義SQL函數的最簡單的方法是用PDO::sqliteCreateFunction(或過時的SQLiteDatabase::createFunction)註冊PHP函數。

+0

那真是太棒了!所以我只需要在php語言中實現腳本(而不是C)並將其註冊(大概是在每個到數據庫的連接上)這個函數。希望這種「實驗性」的pdo功能將來不會如此之多。我會盡快測試並回來,謝謝你! –