¿Cómo puedo determinar los nombres de columna de resultado de la declaración preparada mySQL en PHP?

StackOverflow https://stackoverflow.com/questions/1016717

Pregunta

Es decir, con una declaración preparada como:

select col1,...coln from table where col3 = ?

Creo que puedo usar $ mysqli- > field_count para obtener el número de columnas que se devuelven (no lo he intentado).

Pero, ¿hay alguna forma de vincular el nombre de cada columna a los valores devueltos en bind_results? Siempre podría intentar analizar los nombres de columna del comando en sí, pero ese no es el camino que quiero seguir.

Contexto:

Quiero poder definir una interfaz PHP que asigne las propiedades de clase a los nombres de columna devueltos por la base de datos. Entonces 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;}
}

y

$mysqli->prepare("select col0, col1, col2, col3 from table");

Puedo usar bind_results y luego hacer algo como (código pseudoish)

for($resultColumns as $columnName) {
    if(isset($map[$columnName])) $map[$columnName] = $results[$columnName];
}

para extraer solo las dos columnas que necesito (col1 y col2) y asignarlas a las propiedades correctas de la clase A.

¿Fue útil?

Otros consejos

Gracias por esta corrección. Es muy útil cuando no tienes otra opción frente a un 'select *' S.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top