我在使用PREPARE语句运行mysql时遇到问题。我一直收到这个错误:
致命错误:在第16行的C:\ xampp \ htdocs \ test \ classes \ class.ManageSales.php中的非对象上调用成员函数PREPARE()
这是我的class.ManageSales.php
:
class addSales {
public $sales;
public $created_on;
public $created_by;
public function setSales(array $item) {
$conn = new dbconnection();
$dbh = $conn->connect();
$this->sales = $item['sales'];
$this->created_on = $item['created_on'];
$this->created_by = $item['created_by'];
$query = $dbh->PREPARE("INSERT INTO tbltransaction(transTypeId,amount,created_on,created_by) VALUES(?,?,?,?)");
$values = array(1,$this->sales,$this->created_on,$this->created_by);
$run_query = execute($values);
$counts = $run_query->rowCount();
return $counts;
}
}
我的index.php
是:
require_once 'classes/class.Database.php';
require_once 'classes/class.ManageSales.php';
$theSales = new addSales();
$setSales = $theSales->setSales(array(
'sales' => 1100,
'created_on' => '2014-07-14',
'created_by' => 'Janus Ian'
));
任何人都可以告诉我我的代码有什么问题吗?
好的,我已经更新了我的setSales()函数,但是我收到了新的错误:致命错误:在第20行的C:\ xampp \ htdocs \ test \ classes \ class.ManageSales.php中调用未定义的函数execute()第20行的class.ManageSales.php
答案 0 :(得分:3)
您的数据库处理程序$dbh
未定义。 prepare
也应该是小写的(但这不是你现在得到的错误)
/编辑该代码有多个问题。您所询问的即时错误就是我上面所描述的,但一旦完成,您将会看到更多问题。 execute
定义在哪里?你是说statement->execute
?如果是这样,请定义。你还要覆盖$query
(我想你可能希望第一个成为$statement
,但这只是猜测。)
答案 1 :(得分:0)
您在prepare()
上致电$dbh
。但是代码中未定义$dbh
。我会在$dbh
函数中设置setsales()
参数。然后将$dbconnect
传递给函数。这样你实际上是在DB上调用prepare()
。