Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查mysqli查询是否成功的正确方法_Php_Database_Mysqli_Prepared Statement - Fatal编程技术网

Php 检查mysqli查询是否成功的正确方法

Php 检查mysqli查询是否成功的正确方法,php,database,mysqli,prepared-statement,Php,Database,Mysqli,Prepared Statement,我读过几篇关于这个问题的文章,但是没有一篇对我有帮助,我有点困惑该怎么办 基本上,我想检查sql查询是否在没有任何错误的情况下执行。要做到这一点,我是否必须同时使用下面显示的if语句 if($stmt = $mysqli->prepare("INSERT INTO table VALUES (?, ?, ?);")) { $stmt->bind_param("sss", $a, $b, $c); if(!$stmt->execute()) {

我读过几篇关于这个问题的文章,但是没有一篇对我有帮助,我有点困惑该怎么办

基本上,我想检查sql查询是否在没有任何错误的情况下执行。要做到这一点,我是否必须同时使用下面显示的
if
语句

if($stmt = $mysqli->prepare("INSERT INTO table VALUES (?, ?, ?);"))
{
    $stmt->bind_param("sss", $a, $b, $c);

    if(!$stmt->execute())
    {
        // Do I have to catch the problem here?
    }

    if($stmt->affected_rows === -1){
       // Do I have to catch the problem here?
    }

    $stmt->close();
}
else
{
    // Do I need to catch the problem here?
}

您应该检查
prepare()
bind_param()
execute()
的返回值。如果失败,它们都返回
false

如果
execute()

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
把这条线放在mysqli connect上面。这就是你所需要的


要向用户通知问题,请检查AJAX请求的响应状态。如果是500-则“保存”有问题。

为什么要检查结果?您将如何处理它?我只需要知道是否保存了数据(在本例中),如果不是因为发生了什么事情,我需要知道并通知用户此问题…如果您的问题不是mysqli,而是内存,该怎么办?要再写一封通知信吗?那个么文件系统错误,被零除,缺少变量呢?可能并没有,但一件事是缺少var,被零除,当用户丢失数据时*当然,如果我们讨论的是计算器,我会写一个除法为零的通知程序。。。其他事情也一样…你不明白。除零将导致与mysql失败相同的数据丢失。你必须以同样的方式处理所有错误,不仅仅是你知道的错误。谢谢,但我还有一个问题。如果这对我来说是不够的,我想做一些报告,我的意思是,例如,给我自己发一封关于特定错误的邮件。在这种情况下,哪种选择最好?你能提供一个真实的案例吗?所以我可以告诉你们最合适的选择。在一个特定的mysql错误的情况下发送电子邮件对我来说太人工了。如果在某个块中发生了错误(当前包含评论,如您所见),我想从该位置发送电子邮件或重定向到另一个网站。现在我在想什么是最好的方法。我必须捕获这些地方所有可能出现的错误,还是使用try{}catch(){}?你处理异常的想法是错误的。出于某种原因,你坚持使用最不方便、最不可靠的方法。你甚至没有一个实际的案例来证明你的想法。但我不会支持不好的做法,所以,请不要问我。更确切地说,如果我想做这样的事情(它不必专门发送邮件,它可以是完全不同的事情)。在每个mysql查询中都这样做可以吗?mysql_report()对于AJAX来说是可以的,但是如果mysql_report()对于其他应用程序来说并不足够呢。。。