mysqli中有一个名为的函数,该函数mysqli_report()看起来像PDO setAttribute()方法的ERRMODE_*常量。手册说:
MYSQLI_REPORT_STRICT Throw mysqli_sql_exception for errors instead of warnings
因此,请PDO::ERRMODE_EXCEPTION记住,我尝试了这段代码
mysqli_report(MYSQLI_REPORT_STRICT); $mysqli->query("foo"); 但是令我失望的是,它丝毫没有例外也没有发出警告。
因此,问题来了:有没有办法告诉mysqli不使用就抛出异常MYSQLI_REPORT_ALL?
经过一番研究,我终于了解到该函数的参数是位掩码,并且必须组合多个值才能获得所需的结果。最终的组合不是太合逻辑,但是可以按预期工作,在忽略警告的同时对查询错误抛出异常。
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 将产生预期的结果:
致命错误:消息“您的SQL语法有错误;未捕获的异常'mysqli_sql_exception';检查与您的MySQL服务器版本相对应的手册,以获取在第1行的“ foo”附近使用正确的语法
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。