Как я могу определить имена столбцов результата подготовленной инструкции MySQL в PHP?
-
06-07-2019 - |
Вопрос
То есть, с подготовленным утверждением типа:
select col1,...coln from table where col3 = ?
Я полагаю, что могу использовать $mysqli->field_count, чтобы получить количество возвращаемых столбцов (не пробовал).
Но есть ли способ связать имя каждого столбца со значениями, возвращаемыми в bind_results?Я всегда мог бы попытаться разобрать названия столбцов из самой команды, но это не тот путь, по которому я хочу идти.
Контекст:
Я хочу иметь возможность определить PHP-интерфейс, который сопоставляет свойства класса с именами столбцов, возвращаемыми из базы данных.Так дано
class A implements IColumnMapped{
public $prop1, $prop2; private $map;
public function __construct() {
$map = array();
$map['col1'] = & $this->prop1;
$map['col2'] = & $this->prop2;
}
public function getMap() { return $this->map;}
}
и
$mysqli->prepare("select col0, col1, col2, col3 from table");
Я могу использовать bind_results, а затем сделать что-то вроде (псевдокод)
for($resultColumns as $columnName) {
if(isset($map[$columnName])) $map[$columnName] = $results[$columnName];
}
чтобы извлечь только два столбца, которые мне нужны (col1 и col2), и присвоить им правильные свойства класса A.
Решение
Я верю mysqli_result::извлекаемый объект и mysqli_result::выборка полей мог бы тебе помочь.
Другие советы
Спасибо за это Исправление.Это очень полезно, когда у вас нет выбора перед "выбрать *" S.