我正在尝试使用USERCAKE2.0通过PDO保留和检索图像。
我在以下方法中收到无效的查询错误。
确切错误是:
PHP致命错误:在第51行的非对象上调用成员函数prepare()
转换为方法get_cert'准备语句。
public function get_cert($certificate_number,$issue_date){
global $mysqli,$db_table_prefix;
$result = array();
$stmt = $mysqli->prepare("select * from ".$db_table_prefix."certs where cert_num=? and issue_date=?");
$stmt->bind_param('ss',$certificate_number,$issue_date);
$stmt->execute();
$stmt->store_result();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$result=$stmt->fetch();
return $result;
}
同一个表的插入查询是:
public function persist_cert(){
global $mysqli,$db_table_prefix;
$stmt = $mysqli->prepare('insert into '.$db_table_prefix.'certs (cert_num,certificate,access_url,issue_date) values (?,?,?,?)');
$null = NULL;
$stmt->bind_param('sbss',$this->cert_num,$null,$this->access_url,$this->issue_date);
$stmt->send_long_data(2,$this->certificate);
$this->id = $stmt->execute();
return empty($this->id);
}
表结构是:
$certificate_sql = "CREATE TABLE IF NOT EXISTS `".$db_table_prefix."certs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cert_num` varchar(250) NOT NULL,
`certificate` blob NOT NULL,
`access_url` varchar(200) NOT NULL,
`issue_date` date NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`cert_num`,`issue_date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
";
NB - $ db_table_prefix和$ mysqli是usercake 2.0中的预定义常量。
请告诉我上面的代码有什么问题。为什么我收到错误?