我正在处理写在不同页面中的mysql查询的错误处理(让我们说第A页),而不是负责打印它们的页面(第B页), 例如:
SQLSTATE[42S02]: Base table or view not found
我想收到错误消息文本:
Base table or view not found
来自代码:
42S02
idealy我正在寻找这样的函数:
get_sqlstate_error_text(42S02)
有关信息,我无法访问上一个查询,我只有错误代码
答案 0 :(得分:1)
这就是事情发生的原因:
PHP向MySQL提交查询
有些东西中断,MySQL得到internal error code,例如1146
MySQL填充了邮件模板:Table '%s.%s' doesn't exist
→Table 'shop.customers' doesn't exist
MySQL获取与内部代码对应的映射标准SQLSTATE:42S02
将数据发送回PHP并通过API公开
我们想要反过来:
PHP有SQLSTATE(42S02
)并想要一条错误消息(Base table or view not found
)
SQLSTATE映射到几个内部错误:
PHP很困惑:有三条消息可供选择,有%s
个符号,其中没有一条是想要的消息。
更不用说允许userland SQL代码生成自己的SQLSTATE:
mysql> SIGNAL SQLSTATE 'OMG00';
ERROR 1644 (OMG00): Unhandled user-defined exception condition
简而言之,由于两个原因,无法从代码中找出消息:
不幸的是,明确禁止所有明显的解决方案:
...所以唯一剩下的就是传输错误:
http://example.com/show-error?txt=Base%20table%20or%20view%20not%20found
...但当然你不能这样做,因为迟早会有人将编辑后的链接发送为恶作剧:
http://example.com/show-error?txt=Jimmy%20is%20an%20idiot
所以现在你需要加密(或至少数字签名)消息。但是你想知道你是否允许将加密密钥存储在两个脚本都可以访问它的位置......
好吧,我承认我太过戏剧化了。一个简单的加密/签名可能会成功 - 我不认为将密钥复制到两个脚本都违反规则。
答案 1 :(得分:0)
使用mySqli,您可以执行此操作来处理错误:
git push -u orign master -f
使用PDO试试这个:
if (!mysqli_query($con,"INSERT INTO Persons (FirstName) VALUES ('Glenn')"))
{
echo("Error description: " . mysqli_error($con));
}