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.

Foi útil?

Outras dicas

Obrigado por esta correção. É muito útil quando você não tem escolha na frente de um 'select *' S.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top