代码:
我正在测试下面的简单代码以将数据插入到我的数据库中:
mysqli_query($con,"INSERT INTO Persons (Age) VALUES (35) WHERE FirstName='John'") or die("Error");在我的db中,我没有FirstName=John (它是测试的一部分)的行。
我期待看到的:
因为我的数据库中没有FirstName=John所在的行,所以我希望die()向我发送错误消息。
问题:
Die()不会向我发送错误消息。事实上,我注意到die()只在无法连接到db时才向我发送错误消息。
我的想法:
也许这就是die()的工作方式..。但是,当查询由于没有连接的原因而没有执行时,如何获得通知呢?
发布于 2013-09-22 04:49:12
这很正常。只有当查询失败时,mysqli_query才会返回FALSE,即出现SQL级别.受0影响的行查询不被视为失败(就像SELECT查询的空结果不是失败一样)。在这些情况下,mysqli_query将返回TRUE。
您要做的是检查$con->affected_rows的值,以获得受上次查询影响的行数,如果这等于0,则死掉。
发布于 2013-09-22 04:53:29
您的查询是有效的查询,因此mysqli_query返回true,因此死亡将不会被调用。
发布于 2013-09-22 04:47:37
正如手册中所述,"mysqli_query()在失败时返回FALSE。对于成功的SELECT, SHOW, DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result object。对于其他成功的查询,mysqli_query()将返回TRUE."
因此,如果没有FirstName=John所在的行,则不会出现故障。
可以使用mysqli_affected_rows返回插入的行数。
https://stackoverflow.com/questions/18940403
复制相似问题