Come posso determinare i nomi delle colonne dei risultati delle istruzioni preparate da mySQL in PHP?
-
06-07-2019 - |
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.
Soluzione
Credo mysqli_result :: fetch_object e mysqli_result :: fetch_fields potrebbe aiutarti.
Altri suggerimenti
Grazie per questa correzione. È molto utile quando non hai scelta davanti a un 'select *' S.