当前位置: 首页 > 知识库问答 >
问题:

为什么在connect_error()不工作的情况下死亡?[副本]

陶山
2023-03-14

主要问题:

我试图在网页上打印错误,如果连接到MySQL服务器不做。为此,我写了一个错误的库名$this-

另一个问题:我已经对异常处理代码块进行了注释。现在当我使用它时,它工作得很好。如果出现错误,将抛出异常。但是如果您看到,我已经在$this下面编写了第二个异常抛出代码块-

有没有办法为每个语句抛出异常?(例如,准备、绑定和执行)。

这是我的密码:

<?php
class Database
{
    private $servername;
    private $username;
    private $password;
    private $dbname;
    public $abc;
    public $con;
    public function __construct()
    {
       // ini_set('display_errors',1); error_reporting(E_ALL);
        $this->servername = 'localhost';
        $this->username = 'root';
        $this->password = '';
        $this->dbname = 'dbinds';
        $this->con = mysqli_connect($this->servername, $this->username, $this->password, $this->dbname);
        if($this->con->connect_error){
            die("Something: ".connect_error());
        }
        /*if(!$this->con) {
           throw new Exception("Connection can't be made");
        }*/
        return $this->con;
    }

    public function insert_data($emp_name, $emp_dept, $emp_salary)
    {
        $this->abc=$this->con->prepare("INSERT INTO table1(name, email, password) VALUES(?, ?, ?)");
        //FOLLOWING IF BLOCK
        /*if(!$this->abc) {
            throw new Exception("Couldn't insert data");
        }*/
        $this->abc->bind_param("ssi", $emp_name, $emp_dept, $emp_salary);
        $this->abc->execute();

    }
}
?>
<?php
$conobj=new Database();
$query=$conobj->insert_data("vvsdf", "vsomeone", 3445);
/*try{
    $conobj=new Database();
    $query=$conobj->insert_data("vvsdf", "vsomeone", 3445);

} catch (Exception $e ) {
    //echo "Service unavailable";
    echo "message: " . $e->getMessage();   // not in live code obviously...
   // echo $e;
    exit;
}*/
?>

共有1个答案

唐泳
2023-03-14

您需要决定是使用mysqli的过程版本还是面向对象版本。

但是,您仍然可以将您的if条件更改为:

if (!$this->con) {
   die(mysqli_connect_error());
}

它应该会起作用。您还可以在手册中看到示例

 类似资料:
  • 问题内容: 来自问题的原因,或者说更确切地说,object .__new__在这两种情况下的工作方式不同 作者对为什么不感兴趣,而对如何感兴趣。 我非常想了解原因,尤其是: 为什么不打印任何参数而不是 为什么没有为testclass3引发错误?(因为除了自我之外没有其他参数) 码 问题答案: 您正在使用旧的Python版本;此错误消息已更新: Python只会抱怨既不支持又不被覆盖的参数。例如,当

  • 如果一个中间操作消耗了流的一些元素,之后使用了peek(),但没有终端操作,那么peek()是否还应该产生一些输出呢?

  • 我有一个h2作为唯一的项目在一个容器div。我在容器上使用position:relative和h2上使用position:absolute/bottom:0使它与容器底部对齐。但是,我无法使h2文本与容器div的右侧对齐。 HTML: CSS: 链接:http://www.distributionaccess.com/new/stempath/about.html 我在h2上尝试了display:

  • 本文向大家介绍在什么情况下选择webpack?在什么情况下选择rollup?相关面试题,主要包含被问及在什么情况下选择webpack?在什么情况下选择rollup?时的应答技巧和注意事项,需要的朋友参考一下 非要一句话区分的话 如果是用,如果是用其实界限并不是特别明显。在某些特殊情况下可以互用

  • 问题内容: 说我有一个清单。在什么情况下被称为? 我基本上理解了文档,但是我也想看到一个示例来毫无疑问地阐明其用法。 问题答案: 当Python尝试将两个对象相乘时,它首先尝试调用左侧对象的方法。如果左对象没有方法(或者该方法返回,表明它不适用于所讨论的右操作数),则Python希望知道右对象是否可以进行乘法。如果右操作数与左操作数的类型相同,Python就会知道它不能,因为如果左对象不能做到这一

  • 问题内容: 我在编写一个简单的shell脚本,发现我的shell脚本不需要shebang行 如果我授予脚本执行权限,并使用执行。运行正常。 我正在使用shell,实际上是指向。 我知道shebang行用于告诉shell在您的其余脚本中使用哪个解释器。 如果我错过了perl中的shebang行,请赋予执行权限并运行,它不起作用。 这里到底发生了什么?如果使用,实际上何时需要shebang行? 问题答