加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 21:56:04 所属栏目:PHP教程 来源:网络整理
导读:我有这个外部文件CreateConnection.php,它有一个类DBController及其以下函数. createconnection文件没有遇到任何错误. 里面的CreateConnection.php文件 ?phpclass DBController{ private $servername = "localhost"; private $username = "root"; private $p
我有这个外部文件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);
    }
}
?>

在这个文件中,我包含了外部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: %sn",mysqli_error($connect));
        exit();
    }
?>

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

错误

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli,null given in C:xampphtdocsWeb Php TutorialLoginProcess.php on line 8

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli,null given in C:xampphtdocsWeb Php TutorialLoginProcess.php on line 9

Warning: mysqli_query() expects parameter 1 to be mysqli,null given in C:xampphtdocsWeb Php TutorialLoginProcess.php on line 15

Warning: mysqli_error() expects parameter 1 to be mysqli,null given in C:xampphtdocsWeb Php TutorialLoginProcess.php on line 20

解决方法

添加return $connect;在函数mainConnect(){的末尾,你很好.

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

mysqli,OOP vs Procedural

class DBController
{ 
   private $db;

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

   function __construct(){
      $this->db = new mysqli($this->servername,$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');

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

而不是CreateConnection.php更好的DBController.php

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读