Я пытаюсь написать простой, тонкий и эффективный уровень абстракции базы данных поверх PHP MySQLi (процессуальной) и библиотеки MSSQL, которые будут использоваться как это ...PHP DBAL для MySQLi/MSSQL строки Fetching
while ($a = db::go('db_name')->query('select * from foo')->row()) {
print_r($a);
}
У меня есть класс, написанный, но я немного борюсь с тем, как лучше всего перебирать результаты. Класс должен будет обрабатывать только отдельные запросы и должен обрабатывать некоторые большие результирующие наборы. Вот фрагмент метода ->row()
...
public function row() {
return $this->{'get'.ucwords($this->details['type']).'Row'}();
}
private function getMysqliRow() {
return @mysqli_fetch_assoc($this->result);
}
private function getMssqlRow() {
return @mssql_fetch_assoc($this->result);
}
В данный момент, в результате чего вызов в бесконечном цикле, и извлечения той же самой строке, так как каждый раз, когда внутренний указатель в наборе результатов не увеличивается в так же, как вызов while ($a = mssql_data_seek($result))
, что имеет смысл (набор результатов не является глобальным, вы должны иметь возможность обрабатывать более одного набора результатов за раз!).
Итак, кто-нибудь знает об элегантном и эффективном пути вокруг этого? Или это единственное решение для использования функций поиска данных (mysqli_data_seek() и mssql_data_seek()) и удерживать указатель на текущую позицию в наборе результатов? Если да, насколько это эффективно (я буду обрабатывать большие результирующие наборы> 250000)? И как бы обработчик цикла while достигнет конца набора результатов?
Нужно ли вам рулон вашего собственного слоя доступа? см. http://docs.php.net/pdo – VolkerK
К сожалению, драйвер PDO для MS SQL Server находится только на экспериментальной стадии (http://uk.php.net/manual/en/ref.pdo-dblib. PHP). Мне нужно что-то более крепкое. – chattsm
Есть еще один серверный драйвер для pdo, см. Http://msdn.microsoft.com/en-us/library/cc296152%28SQL.90%29.aspx – VolkerK