Вот моя альтернатива. Это объектно-ориентированное и больше похоже на вещи mysql / mysqli.
class MMySqliStmt{
private $stmt;
private $row;
public function __construct($stmt){
$this->stmt = $stmt;
$md = $stmt->result_metadata();
$params = array();
while($field = $md->fetch_field()) {
$params[] = &$this->row[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $params) or die('Sql Error');
}
public function fetch_array(){
if($this->stmt->fetch()){
$result = array();
foreach($this->row as $k => $v){
$result[$k] = $v;
}
return $result;
}else{
return false;
}
}
public function free(){
$this->stmt->close();
}
}
Использование:
$stmt = $conn->prepare($str);
//...bind_param... and so on
if(!$stmt->execute())die('Mysql Query(Execute) Error : '.$str);
$result = new MMySqliStmt($stmt);
while($row = $result->fetch_array()){
array_push($arr, $row);
//for example, use $row['id']
}
$result->free();
//for example, use the $arr
Руководство, которое вы видите здесь, является частью эталонного приложения для телевидения, также называемого Live Channels, которое является системным приложением и поставляется с каждым образом системы Android TV. Он имеет открытый исходный код под Apache 2.0, и вы можете проверить детали и исходный код здесь:
https://source.android.com/devices/tv/reference-tv-app [110 ] https://android.googlesource.com/platform/packages/apps/TV/
В нем используется система сборки, отличная от Gradle, но вы должны иметь возможность реорганизовать ее для использования Gradle .