Como posso determinar mySQL preparado nomes das colunas de resultados declaração em PHP?
-
06-07-2019 - |
Pergunta
Isto é, com uma declaração preparada como:
select col1,...coln from table where col3 = ?
Eu acredito que posso usar $ mysqli-> field_count para obter o número de colunas que estão sendo devolvidos (não tentei).
Mas há uma maneira de vincular o nome de cada coluna para os valores devolvidos em bind_results? Eu sempre poderia tentar analisar os nomes das colunas para fora do próprio comando, mas isso não é uma estrada Eu quero ir para baixo.
Contexto:
Eu quero ser capaz de definir uma interface PHP que mapeia propriedades de classe de nomes de colunas retornados do banco de dados. Assim, dado
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;}
}
e
$mysqli->prepare("select col0, col1, col2, col3 from table");
Eu posso usar bind_results e então fazer algo parecido (código pseudoish)
for($resultColumns as $columnName) {
if(isset($map[$columnName])) $map[$columnName] = $results[$columnName];
}
para retirar apenas as duas colunas que eu preciso (col1 e col2) e atribuí-los às propriedades corretas de classe A.
Solução
Eu acredito mysqli_result :: fetch_object mysqli_result :: fetch_fields poderia ajudá-lo.
Outras dicas
Obrigado por esta correção. É muito útil quando você não tem escolha na frente de um 'select *' S.