【发布时间】:2015-08-01 02:29:24
【问题描述】:
几天来我一直在努力弄清楚如何在以下过程中遵循 OOP。
这是我的连接类,它处理我与数据库的连接。
<?php
class Connection{
public $con = null;
public function __construct(){
return $this->con = new mysqli("127.0.0.1:3306", "root", "root", "tester");
}
}
?>
这是我的 Helpers 类,该类包含将在我的 webapp 中使用的所有常用方法,例如插入数据、删除和更新。
<?php
class Helpers{
public $con = null;
public function __construct($connection){
$this->con = $connection;
}
public function register($name){
$con = $this->con;
$sql = "insert into name(Name)value($name);";
$con->query($sql);
}
}
?>
现在我在我的 register.php 中这样称呼它们
<?php
require "Connection.php";
require "Helpers.php";
$connection = new Connection();
$Helpers = new Helpers($connection);
$Helpers->register("Keannu");
?>
但我收到以下错误:
调用未定义的方法 Connection::query()。
我做错了什么?
【问题讨论】:
-
因为你要包装它两次,所以你必须使用
$this->con->con->query()。避免额外的包装。并调查 PDO 而不是 mysqli。最终这将是更少的努力(特别是对于更简单的参数绑定)。 -
你正在做一个双重包装,所以它将是
con->con。你应该重新考虑你的结构。伊莫 -
@mario 好的,现在错误消失了,但它没有添加到我的数据库中。
-
检查错误。值中的语法错误很明显;这是一个字符串。检查错误是编码/调试的一部分,你没有这样做
-
打印 mysqli_errors 以了解数据库返回的内容