Oznámení
Problem s fetch v MSSQL při přihlášení pře PDO
před 8 lety
- zahry
- Člen | 8
Po instalaci SqlSrv od Microsoftu se při přihlášení přes PDO
dibi::connect(array(
‚driver‘ ⇒ ‚pdo‘,
‚pdo‘ ⇒ new PDO(‚sqlsrv:server=‘ . $server . ‚;database=‘ .
$database . ‚;‘, $name, $password)
));
se při dotazu
$session = dibi::select(‚*‘)
->from(‚table‘)
->where('')
->fetch();
se objevuje následující chyba
PDO or driver does not support applying limit or offset.
před 8 lety
- gavec
- Člen | 68
Ahoj, taky jsem došel k tomuto problému. Vyřešil si to nějak prosím? Nebo ví někdo, jak fetch a fetchsingle zprovoznit při napojení přes PDO?
před 8 lety
- mr.mac
- Člen | 87
Používám v Dibi vlastní driver sqlsrv.php, který jsem si jednoduše
upravil ze stávajícího mssql.php, abych mohl v PHP 5.3 pracovat s MS SQL
(2008 R2). Funkce fetch(), fetchSingle() a fetchAll() mi fungují v pohodě.
Připojení však nepoužívám PDO.
Co se týče limit a offset, tak stejně jako autor mssql.php offset zatím
implementován nemám, obcházím to takovou malou hrůzou v modelu –
zbývá asi málo to dotáhnout do driveru:
public function pg_data($sql_cmd, $cond, $key='', $limit=0, $offset=0)
{
if($limit==0 && $offset==0){
$rslt = $this->connection->query("$sql_cmd WHERE $cond");
} else {
//implementace stránkování
$page = (int) ($offset / $limit) + 1;
$start = ($page - 1) * $limit + 1;
$end = $page * $limit;
$rw = "SELECT ROW_NUMBER() OVER(ORDER BY $key) AS RowNum, ";
$sql_cmd = str_replace("SELECT ", $rw, $sql_cmd);
$sql_cmd = "$sql_cmd WHERE $cond";
$rslt = $this->connection->select("*")->from("($sql_cmd) tmp
WHERE tmp.RowNum BETWEEN $start AND $end");
}
return $rslt;
}
Editoval mr.mac (28. 11. 2011 21:53)
před 8 lety
- David Grudl
- Nette Core | 6806
Tento problém by v poslední verzi být neměl.