Wie kann ich feststellen, mySQL Anweisung Ergebnis Spaltennamen in PHP vorbereitet?
-
06-07-2019 - |
Frage
Das heißt, mit einer vorbereiteten Aussage wie:
select col1,...coln from table where col3 = ?
Ich glaube, ich mysqli- $ verwenden> field_count die Anzahl der Spalten zu bekommen zurückgegeben wird (noch nicht ausprobiert).
Aber ist es eine Möglichkeit, jeden Spalt Namen auf die Werte in bind_results zurück zu verknüpfen? Ich konnte immer versuchen, die Spaltennamen aus dem Befehl selbst zu analysieren, aber das ist kein Weg, den ich gehen will nach unten.
Kontext:
Ich möchte in der Lage, eine PHP-Schnittstelle zu definieren, die Klasseneigenschaften zu Spaltennamen aus der Datenbank abbildet zurückgegeben. So gegeben
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;}
}
und
$mysqli->prepare("select col0, col1, col2, col3 from table");
kann ich bind_results verwenden und dann so etwas wie (pseudoish Code)
for($resultColumns as $columnName) {
if(isset($map[$columnName])) $map[$columnName] = $results[$columnName];
}
nur die beiden Spalten zu ziehen Ich brauche (col1 und col2) und weisen Sie auf die richtigen Eigenschaften der Klasse A.
Lösung
Ich glaube, MySQLi_Result :: fetch_object und MySQLi_Result :: fetch_fields könnte Ihnen helfen.
Andere Tipps
Vielen Dank für diese Korrektur. Es ist sehr nützlich, wenn Sie keine andere Wahl, vor einem ‚select *‘ haben S.