我有这样的方法:
public function query ($sql) {
$this->result = $this->db->query($sql);
}
将查询语句绑定到结果变量。这非常方便,因为我有几个输出内容的方法和另一个方法,然后为其他任务处理$result
变量。
但是我想使用相同类型的方法,但是在准备好的语句上(为了逃避插入的数据)我遇到了一个问题:
public function prepare ($sql) {
$this->result = $this->db->prepare($sql);
}
我试着像这样使用它:
public function insert ($this, $that) {
// Then I tried to use my prepare method
$var = $this->prepare(INSERT INTO Table (Row1, Row2) VALUES (:Val1, :Val2));
$var->bindValue(":Val1", $this, PDO::PARAM_INT);
//... and so on
}
问题出现在$var->bindValue()
“对非对象的成员函数bindvalue()的调用”。这里到底发生了什么,因为我真的不明白错误信息?如果我使用查询方法查询我的数据库它可以正常工作,但如何使用prepare方法绑定值?
答案 0 :(得分:1)
在:
public function ($sql) {
$this->result = $this->db->prepare($sql);
}
您忘记返回结果。 (您还忘记了代码段中该功能的名称。)
错误信息很清楚,你在一个不是对象的东西上调用一个方法。在这种情况下,您在NULL
上调用它,因为您自己的prepare-method不会返回任何内容。
答案 1 :(得分:0)
首先我注意到你的方法没有名字。
public function ($sql) {
$this->result = $this->db->query($sql);
}
不应该像
那样 public function doSomething($sql) {
$this->result = $this->db->query($sql);
}
其次,您似乎在调用方法中的另一个类的实例。
$this->db->query($sql)
如果没有错,'db'应该是你试图访问其查询方法的另一类...再看看你的代码。
最后,我错过了一份退货声明。