在 OOP 中插入数据库不起作用

Insert into database in OOP doesn't work

我正在尝试按照教程进行面向对象的登录并插入到数据库中,但这不起作用。它不会连接到数据库,错误:未选择数据库。你能帮帮我吗?

这是代码:

表格在index.php

   <form action="insert.php" method="post">
   Firstname: <input type="text" name="fname" /><br><br>
   Lastname: <input type="text" name="lname" /><br><br>
   <input type="submit" />

Class 在 insert_class.php:

<?php 
class Insert_class {

public $servername;
public $username;
public $password;
public $dbname;

public function __construct(){

 // Create connection
  $conn = mysqli_connect($servername, $username, $password, $dbname);
 // Check connection
 if (!$conn) {
   die("Connection failed: " . mysqli_connect_error());
 }

 // insert into database
 $sql = "INSERT INTO nametable (firstname, lastname)
 VALUES ('$_POST[fname]','$_POST[lname]')";

 if (mysqli_query($conn, $sql)) {
   echo "New record created successfully";
 } else {
   echo "Error: " . $sql . "<br>" . mysqli_error($conn);
 }

  mysqli_close($conn);

  }
}

在 insert.php 中用于登录和插入数据库的对象:

require 'insert_class.php';

$insert = new Insert_class();

$insert->servername ='localhost';
$insert->username ='root';
$insert->password ='';
$insert->dbname ='newdatabase';

与其明确定义连接细节,不如使用 DEFINE ..

  define("DB_HOST", "localhost");
  define("DB_USER", "root");
  define("DB_PASSWORD", "");
  define("DB_NAME", "newdatabase");

insert_class.php ...

public function __construct(){

  $conn  = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die(mysql_error());
  mysql_select_db(DB_NAME, $conn) or die(mysql_error());

}

试试这个

<?php 
class Insert_class {

    private $servername;
    private $username;
    private $password;
    private $dbname;
    private $con

    public function __construct($servername,$username,$password,$dbname)
    {

        $this->servername = $servername;
        $this->username   = $username;
        $this->password   = $password;
        $this->dbname     = $dbname;
        // Create connection
        $this->conn = mysqli_connect($this->servername, $this->username,
                                     $this->password, $this->dbname);

        if ($this->con->connect_error) {
            die('Connect Error (' . $this->con->connect_errno . ') '. $this->con->connect_error);
        }

        // etc

    }

那么你可以

require 'insert_class.php';
$insert = new Insert_class('localhost','root','','newdatabase');

请注意,我还将 $con 捕获为 属性。您的代码会有很多,因为它只在 __construct 中可见,但是您可能想在此 class.

中编写的其他方法的 none

另请注意,我更改了连接成功的测试。这是检查连接是否成功的正确方法。简单的 if( ! $con ) 不够好。