Windows环境下PHP如何开启SQLite3的UPDATE/DELETE LIMIT功能
解决方案
Windows版本PHP的php_sqlite3.dll默认将SQLite源码静态编译到扩展内部,没有单独依赖外部SQLite库,要开启SQLITE_ENABLE_UPDATE_DELETE_LIMIT选项,需要自行重新编译php_sqlite3.dll扩展,操作步骤如下:
- 准备对应版本的Windows PHP编译环境:根据你使用的PHP版本安装对应的Visual Studio编译器(例如PHP 7.4/8.0/8.1对应VS2019,PHP 8.2+对应VS2022),同时下载官方PHP SDK和对应版本的PHP完整源码包
- 修改sqlite3扩展的编译配置:找到PHP源码目录下的
ext/sqlite3/config.w32文件,在SQLite相关的编译参数行中添加宏定义/DSQLITE_ENABLE_UPDATE_DELETE_LIMIT - 编译扩展:按照Windows PHP扩展编译流程执行编译命令,完成后会得到新的
php_sqlite3.dll文件 - 替换原有扩展:将编译生成的新dll覆盖PHP安装目录下
ext文件夹中的原有php_sqlite3.dll,重启PHP对应的服务即可生效
如果不想自行编译,也可以使用兼容写法实现相同效果,无需修改编译配置:
-- 带LIMIT的DELETE等效写法 DELETE FROM 你的表名 WHERE 主键列 IN ( SELECT 主键列 FROM 你的表名 WHERE 筛选条件 LIMIT 行数 ); -- 带LIMIT的UPDATE等效写法 UPDATE 你的表名 SET 字段名=新值 WHERE 主键列 IN ( SELECT 主键列 FROM 你的表名 WHERE 筛选条件 LIMIT 行数 );
内容的提问来源于stack exchange,提问作者tim
相关产品推荐
相关产品推荐

