Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的数据未插入php mysqli中_Php - Fatal编程技术网

我的数据未插入php mysqli中

我的数据未插入php mysqli中,php,Php,[已解决] 我通过从dbfunction.php调用数据库连接,而不是创建dbconnect.php的对象,解决了这个问题。像这样 function __construct() { require_once('database/config.php'); $this->db = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE); } 我正在尝试使用mysqli将数据插入数据库。但它总是显示出我的错误

[已解决] 我通过从
dbfunction.php
调用数据库连接,而不是创建
dbconnect.php
的对象,解决了这个问题。像这样

 function __construct() {
     require_once('database/config.php');
 $this->db = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
 } 
我正在尝试使用mysqli将数据插入数据库。但它总是显示出我的错误

注意:未定义变量:conn in 第33行的D:\xampp\htdocs\fokrulcart\class\dbfunction.php 致命错误:未捕获错误:在D:\xampp\htdocs\fokrulcart\class\dbfunction.php:33堆栈中调用null上的成员函数query() 跟踪:#0 D:\xampp\htdocs\fokrulcart\reg.php(11):dbFunction->reg('re-ay','aer-yt','aetu')#1{main}抛出 第33行的D:\xampp\htdocs\fokrulcart\class\dbfunction.php

这是我的连接:

<?php  
class dbConnect {  

    function __construct() {  
        require_once('config.php');  
        $conn = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);  
        if(!$conn)
        {  
            die ("Cannot connect to the database");  
        }
        else{
            echo "Connected";
            return $conn; 
        }  

    }
}  
?>  
这是我的
dbfunction.php
页面。此页显示错误

<?php  
require_once 'database/dbConnect.php';  

class dbFunction {  
    public $db;
    public $conn;
    function __construct() {  
        $conn = new dbConnect();
    }
    public function reg($l, $f, $e){
        $sql = "INSERT INTO reg (f, l, e)
        VALUES ('John', 'Doe', 'john@example.com')";
        if ($conn->query($sql) === TRUE) { //error shows here.
            echo "New record created successfully";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }

在您的代码中,变量
$conn
仅在
\u construct
函数中定义。 您应该通过以下方式将值写入全局变量

function __construct() {  
     $this->conn = new dbConnect();
}
然后调用全局变量use

$this->conn->query($sql)

这里有两个问题:

  • 您无法从构造函数返回任何内容,因此
    new dbConnect()
    永远不会给您
    mysqli
    对象。它将为您提供一个
    dbConnect
    ,因此您需要将数据库连接存储在该类中,并提供获取该连接的方法
  • 设置对象的属性时,需要
    $this
    ,因此
    $this->conn=new dbConnect

  • Ehm,$conn在dbfunction.php中不是公共的,如果您是从构造函数中分配它,您必须使用特殊的单词$this引用它,因此您必须使用$this->conn=new dbConnect()更改代码;移除
    回显“已连接”在<代码>中回显“已连接”;返回$conn
    在类dbConnect的末尾。注意:构造函数不能返回内容。如果在构造函数中返回某个内容,它将被忽略。您将只获得该对象的新实例。(不确定为什么尝试这样做不会生成警告。)这将不会像
    $this->conn
    那样工作,它将是
    dbConnect
    的一个实例,而不是
    mysqli
    。现在它向我显示了这个错误`未捕获的错误:调用未定义的方法dbConnect::mysqli\u query()`
    $this->conn->query($sql)