【发布时间】:2017-08-19 12:33:52
【问题描述】:
我尝试将我的数据库与我的 php 代码链接,它已完成,但尝试将信息发送到我的数据库,但它返回了错误我通过创建一个对象并调用类的方法来尝试它,但它返回了错误在这一行中,我认为调用函数时存在问题,但无法理解错误,甚至尝试谷歌搜索但无法解决问题
致命错误:未捕获的错误:在 C:\xampp\htdocs\oophp\Home.php:15 中调用成员函数 connect() 堆栈跟踪:#0 C:\xampp\htdocs\oophp\Home。 php(47): Home->__construct('example', 'example123', 'example8@gmail....') #1 {main} 在第 15 行的 C:\xampp\htdocs\oophp\Home.php 中抛出
Connect.php 中的代码是
<?php
class Connect
{
protected $connection;
public function __construct()
{
}
public function connect(){
try
{
$this->connection = new
PDO('mysql:host=localhost;dbname=oo;charset=utf8mb4','root','');
echo "connected sucessfully";
return $this->connection;
}
catch(PDOException $e)
{
echo "connection failed : " . $e->getMessage();
}
}
}
?>
Home.php 中的代码是
<?php
require_once __DIR__ . '\Connect.php';
class Home extends Connect{
protected $user = array();
protected $var0;
protected $response = array();
protected $username;
protected $password;
protected $email;
protected $var1;
public function __construct($username , $password ,$email)
{
$var0 = new Connect();
$var1 = $this->var0->connect();
$this->username = $username;
$this->password = $password;
$this->email = $email;
}
public function Insert()
{
try
{
global $var1;
$insert = $this->var1->prepare("INSERT INTO person
(username,password,email) VALUES (:username,:password,:email)");
$insert->bindParam(':username',$this->username);
$insert->bindParam(':password',$this->password);
$insert->bindParam(':email',$this->email);
$insert->execute();
}
catch(PDOException $e)
{
echo $e;
}
if(row_Count($insert)>0)
{
$this->response["status"] = 1;
echo "Sucessfully inserted to database";
}
else
{
$this->response["status"] = 0;
echo "there is a error in inserting";
}
}
}
$dfg = new Home("example","example123","example8@gmail.com");
$dfg->Insert();
?>
我找不到问题,但我认为 connect() 函数有错误,感谢您的帮助
【问题讨论】:
-
在您尝试使用它之前,您永远不会定义
$this->var0。将$var0 = new Connect();更改为$this->var0 = new Connect();。对构造函数中的$var1执行相同操作,并删除Insert()-方法中的global $var1 -
建议,让您的属性和变量名称具有描述性。不要使用通用名称,如
$var0、$var1等。稍后您会感谢我的。