php - Er der en måde at indstille en standard cursortype på PDO (specifikt PDO\_SQLSRV)?

Indlæg af Hanne Mølgaard Plasc

Problem



Så irriterende returnerer PDO\_SQLSRV driveren fra Microsoft -1 på et hvilket som helst rowCount () opkald fra en SELECT-forespørgsel med ikke-rullbare markører.


Yderligere at tilføje til irritationen, er standard cursortype \_FORWARD, hvilket betyder, at jeg tilsyneladende skal tilføje attributter til hver forberedt erklæring, hvor jeg muligvis skal få en række tilbage (i denne app, det er meget) som nedenfor. Dette er uacceptabelt, da nogle af de databasemotorer, vi vil bruge, ikke understøtter rullbare markører.


$pdo->prepare("SELECT x FROM y", array(PDO::ATTR\_CURSOR, PDO::CURSOR\_SCROLL));


Forhåbentlig ser det ikke ud til at arbejde med BOB :: forespørgsel () ...


Rediger:
Som nedenfor har jeg også forsøgt PDO :: setAttribute () og tilføjer muligheden for PDO :: \_\_ construct (), men heller ikke kaste undtagelser eller fejl eller synes faktisk at gøre noget!


Mit spørgsmål til jer alle er: Er der en måde at indstille standard cursortype på CURSOR\_SCROLL?

Bedste reference


Hvad med:


$pdo->setAttribute(PDO::ATTR\_CURSOR, PDO::CURSOR\_SCROLL);


?


Du kan også udvide base PDO klasse med din egen, med prepare metode overstyring:


class MyPdo extends PDO
{
    public function prepare($statement, $options = array())
    {
        if (empty($options)) $options = array(PDO::ATTR\_CURSOR => PDO::CURSOR\_SCROLL);
        return parent::prepare($statement, $options);
    }
}