Domanda

Cioè, con una dichiarazione preparata come:

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

Credo di poter usare $ mysqli- > field_count per ottenere il numero di colonne restituite (non ci ho provato).

Ma c'è un modo per collegare ogni nome di colonna ai valori restituiti in bind_results? Potrei sempre provare ad analizzare i nomi delle colonne dal comando stesso, ma non è una strada che voglio percorrere.

Contesto:

Voglio essere in grado di definire un'interfaccia PHP che associ le proprietà della classe ai nomi delle colonne restituiti dal database. Così dato

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");

Posso usare bind_results e quindi fare qualcosa di simile (codice pseudoish)

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

per estrarre solo le due colonne di cui ho bisogno (col1 e col2) e assegnarle alle proprietà corrette della classe A.

È stato utile?

Altri suggerimenti

Grazie per questa correzione. È molto utile quando non hai scelta davanti a un 'select *' S.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top