如何通过 PHP 启用 SQLite 扩展结果代码?

Posted

技术标签:

【中文标题】如何通过 PHP 启用 SQLite 扩展结果代码?【英文标题】:How to enable SQLite extended Result Codes through PHP? 【发布时间】:2019-03-11 03:49:10 【问题描述】:

像下面这样的语句给出了通用错误代码,它对诊断实际问题没有多大帮助。要获得更具体的错误代码 SQLite 扩展结果代码 需要启用。

echo "错误代码:".$db->lastErrorCode();

有一个 SQLite 例程可以这样做:

SQLite C Interface

但是在 PHP 中找不到资源来做同样的事情,让我在这里问这个问题。提前致谢。

【问题讨论】:

很多语言的sqlite绑定没有提供很多C API的特性。所以你可能对 php 不走运。 是的,不得不承认这一现实! 【参考方案1】:

您可以尝试使用获取最后一条错误消息的方法与您已经使用的获取最后一条错误代码的方法结合使用:

echo "Eror Code: ".$db->lastErrorCode(); 
echo "Error Message: ".$db->lastErrorMsg();

【讨论】:

我都试过了,但我真正想要的只是错误代码。 例如:- 错误代码:19 - 外键约束失败。错误代码:19 - 列 col1、col2 不是唯一的。错误代码是通用的,即,对于两个不同的错误,您会得到相同的代码。但是,我想要更具体的代码。 对不起,我误解了您的需求...我虽然您想要更多详细信息,因为您只收到错误代码而不是消息。【参考方案2】:

从PHP 7.4,您可以使用$db->setAttribute(PDO::SQLITE_ATTR_EXTENDED_RESULT_CODES, true);new PDO('sqlite::memory:', '', '', [PDO::SQLITE_ATTR_EXTENDED_RESULT_CODES => TRUE]);

可通过$db->lastExtendedErrorCode() 获得扩展错误代码。

【讨论】:

以上是关于如何通过 PHP 启用 SQLite 扩展结果代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php 中启用 sqlite3 的 PDO 驱动程序?

安装 PHP 7 后如何安装/启用 intl 和 xsl 扩展

如何以编程方式启用php扩展intl

如何在 SQLite 中为 DELETE 启用 LIMIT?

如何在 xampp linux 上启用 mcrypt php 扩展

pdo sqlite 找不到驱动程序... php 文件未处理