Comment puis-je déterminer les noms des colonnes de résultats d'instructions préparées mySQL en PHP?

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

Question

C’est-à-dire avec une déclaration préparée telle que:

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

Je pense pouvoir utiliser $ mysqli- & field_count pour obtenir le nombre de colonnes renvoyées (sans avoir essayé).

Mais existe-t-il un moyen de lier chaque nom de colonne aux valeurs renvoyées dans bind_results? Je pourrais toujours essayer d'analyser les noms des colonnes à partir de la commande elle-même, mais ce n'est pas une route que je veux emprunter.

Contexte:

Je veux pouvoir définir une interface PHP qui mappe les propriétés de classe aux noms de colonnes renvoyés par la base de données. Donc, étant donné

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;}
}

et

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

Je peux utiliser bind_results et ensuite faire quelque chose comme (code pseudo-froid)

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

pour extraire uniquement les deux colonnes dont j'ai besoin (col1 et col2) et les affecter aux propriétés correctes de la classe A.

Était-ce utile?

La solution

Autres conseils

Merci pour cette correction. C'est très utile quand vous n'avez pas le choix devant un 'select *' S.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top