我正在为大学项目创建一个PHP / MySQLi类,并且他们正在使用PHP 5.2.6版。我需要我的类使用预准备语句执行查询并给出一组结果,所有这些都适用于PHP> 5.3但是在5.2.6我的get_result
导致致命错误。还有其他选择吗?
我查看bind_result
虽然声明中可能有任意数量的字段,这意味着我无法使用此功能。
public function select($query, $data = NULL) {
$db = $this->connect();
$stmt = $db->prepare($query);
if(!is_null($data)) {
call_user_func_array(array($stmt, 'bind_param'), $this->query_params($data));
}
$stmt->execute();
$sqlResult = $stmt->get_result(); //fatal error on PHP < 5.3
$results = array();
while($row = $sqlResult->fetch_assoc()) {
$results[] = $row;
}
return $results;
}
答案 0 :(得分:0)
你可以使用bindvalues(),如
public function query($sql,$params = array()){
$this->_error = false;
if($this->_query = $this->_pdo->prepare($sql)){
$x = 1;
if(count($params)){
foreach($params as $param){
$this->_query->bindValue($x, $param);
$x++;
}
}
if($this->_query->execute()){
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_count = $this->_query->rowCount();
}else {
$this->_error = $this->_query->errorInfo();
}
}
return $this;
}
答案 1 :(得分:-1)
可能重复:Call to undefined method mysqli_stmt::get_result?
请阅读此方法的用户说明:
http://php.net/manual/en/mysqli-stmt.get-result.php
它需要mysqlnd驱动程序......如果它没有安装在你的网站空间上,你将不得不使用BIND_RESULT&amp; FETCH!