当连接数据库时出现问题,这只是一个问题吗? (我确实检查数据库连接是否成功)。假设我做了足够的检查以确保我的查询始终有效,是否可以跳过以下检查:
if($ stmt = $ db-> prepare($ query)) { //更多代码 }
而只是做:
$ stmt = $ db-> prepare($ query); //更多代码
我认为事务可能可以做到这一点,但是我的数据库表不支持事务(我使用的是MyISAM,因为我做的数据读取比写入要多得多)。
谢谢!
答案 0 :(得分:1)
Tandu在这里提供了一个严重误导性的概念,你不幸接受了这个概念。
无论您使用的是什么数据库抽象层(您使用的是mysqli),它实际上都依赖于是否模拟准备好的查询,或者它是否在数据库级别本机运行。如果底层数据库引擎无法“准备”它,那么准备好的查询可以而且应该失败。
它与您的数据库连接是否成功无关。
你绝对应该检查prepare()调用的返回值。如果您有编程错误,它将失败。如果您有其他级别的应用程序问题,它将失败。等等。这是返回值的全部要点。
如果你认为它总是好的,你就会冒失败的查询,这会导致数据丢失 - 可能更多。
要明确说明,每次查询失败时都要检查结果。你不知道...因此总是如此。