Как я могу определить подготовленные mySQL имена столбцов результата оператора в PHP? - PullRequest
1 голос
/ 19 июня 2009

То есть с готовым утверждением типа:

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

чтобы вытащить только два нужных мне столбца (col1 и col2) и присвоить им правильные свойства класса A.

Ответы [ 2 ]

1 голос
/ 19 июня 2009

Полагаю, mysqli_result :: fetch_object и mysqli_result :: fetch_fields могут помочь вам.

0 голосов
/ 31 июля 2009

Спасибо за это исправление. Это очень полезно, когда у вас нет выбора перед «select *» S.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...