我正在尝试将站点转换为使用准备好的 mysql 语句,但是在替换fetch_array()
.
php.net 上的评论提供了一个我认为应该可行的解决方案,但由于某种原因,我在调用函数时遇到了奇怪的未定义常量错误,call_user_func_array()
有人可以提出更好的方法吗?
这是我目前正在使用的功能。我已经把它放在这里了(它是一个更大的类的一部分,它扩展了 mysqli 并处理错误捕获等),如果我在复制和粘贴它时犯了任何错误,我很抱歉。
public static function stmt_bind_assoc(&$stmt, &$out) {
$data = mysqli_stmt_result_metadata($stmt);
$fields = array();
$out = array();
$fields[0] = $stmt;
$count = 1;
while($field = mysqli_fetch_field($data)) {
$fields[$count] = &$out[$field->name];
$count++;
}
call_user_func_array(mysqli_stmt_bind_result, $fields);
}
public function fetch_array($rawQuery) {
$stmt = $this->prepare($rawQuery);
$row = array();
self::stmt_bind_assoc($stmt, $row);
$result = $stmt->fetch();
$stmt->free();
return $result;
}
我得到的错误是:
注意:使用未定义的常量 mysqli_stmt_bind_result - 假定为 'mysqli_stmt_bind_result'
致命错误:调用未定义的方法 mysqli_stmt::free()