我的数据未插入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)