为什么这个mysqli插入不起作用?

时间:2011-09-20 07:58:03

标签: php oop mysqli

我试图以面向对象的方式使用mysqli,这是代码:

class conect {
   function populate( ) {
         while ($row = $this->result->fetch_object()) { $this->data[] = $row; }
       $this->result->close();
   }
   function conect( ) {
     $mysqli = new mysqli('localhost', 'root', 'root', 'todo');  
        if (mysqli_connect_errno()) {
           printf("Connect failed: %s\n", mysqli_connect_error());
           exit();
           };
   }
   function register($name, $email, $password ) {
     $mysqli->query("INSERT INTO user (name, email, password) 
        VALUES ('$name', '$email', '$password')");
   }
 }

寄存器功能是问题,如果我在conect()函数中添加该查询它确实有效,但因为它不起作用,所以不会显示错误

我一直在努力学习面向对象的php和mysqli。我已经设法使用上面的风格来创建一个动态的投资组合,但这是我第一次尝试写入数据库所以我不知道这是什么问题

希望你能帮忙

谢谢

2 个答案:

答案 0 :(得分:0)

您不会显示任何错误,因此,难怪没有显示错误。

$sql = "INSERT INTO user (name, email, password) VALUES ('$name', '$email', '$password')";
if (!$mysqli->query($sql)) {
    trigger_error($mysqli->error);
}

但是,为了让您知道,您的代码无论如何都与mysqli和oop无关。

答案 1 :(得分:0)

问题是您的$mysqli方法中的变量register()未定义。这也意味着您无法从“无”调用任何方法。在脚本顶部添加error_reporting(E_ALL);以查看有关未定义变量的警告。

要解决此问题,您需要将MySQLi对象保存在对象字段中,并使用$this->mysqli或sth访问它。这样您就可以在connect()方法中进行设置,并在register()方法中使用它。

相关问题