つまり、次のような準備済みステートメントを使用します。
select col1,...coln from table where col3 = ?
$mysqli->field_count を使用して、返される列の数を取得できると思います(試していません)。
しかし、各列名を bind_results で返される値にリンクする方法はありますか? コマンド自体からいつでも列名を解析しようとすることができますが、それは私が行きたい道ではありません。
環境:
クラス プロパティをデータベースから返された列名にマップする PHP インターフェイスを定義できるようにしたいと考えています。与えられた
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;}
}
と
$mysqli->prepare("select col0, col1, col2, col3 from table");
bind_results を使用して、次のようなことを行うことができます (疑似コード)
for($resultColumns as $columnName) {
if(isset($map[$columnName])) $map[$columnName] = $results[$columnName];
}
必要な 2 つの列 (col1 と col2) だけを取り出し、それらをクラス A の正しいプロパティに割り当てます。