Mysqli->error 返回一个空值

Posted

技术标签:

【中文标题】Mysqli->error 返回一个空值【英文标题】:Mysqli->error is returning a blank value 【发布时间】:2016-07-17 17:32:32 【问题描述】:

我正在尝试将错误返回给 ajax 帖子。但是mysqli->error 返回空白。我尝试了很多方法来做到这一点,但总是一样的。我不知道php.ini 上是否有一些配置要做。请帮忙!

这是我的菜鸟代码

        $sql = "UPDATE ve_industria SET industria_nome='blabla',industria_descricao='blabla' WHERE industria_Id='124142354'";
        $result = $mysqli->query($sql);
        if (!$result) 
            $arr['resposta'] = "0";
            $arr['mensagem'] = $mysqli->error;
            $arr['titulo'] = "ERRO !";
            $arr['tipo'] = "error";
        
        if ($result) 
            $arr['resposta'] = "1";
            $arr['mensagem'] = "Registro atualizado com sucesso no banco de dados :)";
            $arr['titulo']   = "Registro Atualizado !";
            $arr['tipo']     = "success";
        
        echo json_encode($arr); 

这些信息,我将用 ajax 页面返回给主 html,以显示在指定错误的模式框中。

【问题讨论】:

仅仅因为$result 是“不”,并不意味着有错误。事实上,这可能只是意味着更新没有更改任何内容,这不是错误 - 而是“没有任何更新”的结果。 @cale_b 查看文档,mysqli::query() 在执行 SELECT、SHOW、DESCRIBE 或 EXPLAIN 时返回 true、false 或结果对象。你所说的听起来像是返回的受影响行数(这将是 mysqli::$affected_rows) 【参考方案1】:

mysqli->affected_rows 将为您提供上次 mysql 操作更新的记录数。

http://php.net/manual/en/mysqli.affected-rows.php

用受影响的行更新了您的代码。

 $sql = "UPDATE ve_industria SET industria_nome='blabla',industria_descricao='blabla' WHERE industria_Id='124142354'";
        $mysqli->query($sql);
        if ($mysqli->affected_rows<=0) 
            $arr['resposta'] = "0";
            $arr['mensagem'] = "0 Records Updated"
            $arr['titulo'] = "ERRO !";
            $arr['tipo'] = "error";
         else  
            $arr['resposta'] = "1";
            $arr['mensagem'] = "Registro atualizado com sucesso no banco de dados :)";
            $arr['titulo']   = "Registro Atualizado !";
            $arr['tipo']     = "success";
        
        echo json_encode($arr); 

【讨论】:

感谢您的回答,但此解决方案不会带来“mysqli>错误”。我需要通过 json 值将错误带到主页。但是 mysqli->error 被赋予了一个空白值。 添加异常处理try,catch到$mysqli->query($sql),当执行$sql发生任何错误时,会去catch,那里添加mysql的响应数组- >错误。

以上是关于Mysqli->error 返回一个空值的主要内容,如果未能解决你的问题,请参考以下文章

php中mysqli_error($conn)的用法

前端经验

mysqli返回受影响行数

mysqli->query 在更新时返回 true,但不影响行

为啥当 == 为空值返回 true 时 >= 返回 false?

PHP连接数据库