PHP在外部文件中调用类中的函数,语法?

lau*_*ano 3 php mysqli class function

我有这个外部文件CreateConnection.php,它有一个类DBController及其以下函数.createconnection文件没有遇到任何错误.

里面的CreateConnection.php文件

<?php
class DBController
{
    private $servername = "localhost";
    private $username = "root";
    private $password = "";
    private $database = "mydatabase";

    function mainConnect()
    {
        //call the function connectDatabase to $connect
        $connect = $this->connectDatabase();

       //call the function selectDatabase
        $this->selectDatabase($connect);

        if(!$connect)
        {
            //Otherwise, prompt connection failed
            die("Connection failed: ".mysqli_connect_error());
        }
    }

    function connectDatabase()
    {
        //Create connection
        $connect = mysqli_connect($this->servername, $this->username, $this->password);
        return $connect;
    }

    function selectDatabase($connect)
    {
         //Select database
         mysqli_select_db($connect, $this->database);
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

在这个文件中,我包含了外部CreateConnection.php,但是我的' $ connect '在调用mainConnect()函数时遇到了很多错误. Process.php文件

<?php
    include("CreateConnection.php");
    $DBHandler = new DBController();

    $connect = $DBHandler->mainConnect();

    //Get values from form LoginReminder.php file
    $username = mysqli_real_escape_string($connect, $_POST['username']);
    $password = mysqli_real_escape_string($connect, $_POST['password']);
    //Removes back slashes in input
    $username = stripcslashes($username);
    $password = stripcslashes($password);

    //Query the database for users
    $result = mysqli_query($connect,"select * from tablereminders where username = '$username' and password = '$password' ");

    //Error connection and query
    if (!$result)
    {
        printf("Error: %s\n", mysqli_error($connect));
        exit();
    }
?>
Run Code Online (Sandbox Code Playgroud)

我的语法是不正确的,因为我在提交表单时遇到了很多错误:

错误

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\Web Php Tutorial\LoginProcess.php on line 8

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\Web Php Tutorial\LoginProcess.php on line 9

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\Web Php Tutorial\LoginProcess.php on line 15

Warning: mysqli_error() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\Web Php Tutorial\LoginProcess.php on line 20
Run Code Online (Sandbox Code Playgroud)

Jus*_*ons 7

添加return $connect;到最后,function mainConnect(){你很好.

但为什么你根本不使用OOP版本的MYSQLi?

mysqli,OOP与程序

class DBController
{ 
   private $db;

   private $servername = "localhost";
   private $username = "root";
   private $password = "";
   private $database = "mydatabase";

   function __construct(){
      $this->db = new mysqli($this->servername, $this->username, $this->password);
      $this->db->select_db($this->database);
   }
   function db(){
      return $this->db;
   }

}
$connection = new DBController();

#now instead of  using mysqli_query();
$connection->db()->query('SQL QUERY');
Run Code Online (Sandbox Code Playgroud)

并且只包含一个类的文件应该具有以下名称:

而不是CreateConnection.php 更好DBController.php

文件名听起来像包含它时会创建一个连接,但事实并非如此:)