DAO query() crashing PHP

Hello Everyone;

I’ve got a really weird situation.

I’ve started using DAO queries since a couple of weeks to improve the performance.

Today I started coding a really stupid action that should do nothing but return a set of elements in JSON format.

the code is something like this:


    public function actionCheckrefs() {

        $connection = Yii::app()->db;

        if (!$connection->getAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY))

            $connection->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

        $failedItems = array();

        $sql = 'SELECT ID, thumb_URL, selling_end_date FROM '.Items::model()->tableName().' LIMIT '.$_GET['start'].', '.$_GET['amount'];

        $itemsList = $connection->createCommand($sql)->query();

        // other harmless stuff

        Utils::outputJson(array('items'=>$failedItems))

    }

now I started getting mad because at the beginning the ouputJson function was never reached, with no errors whatsoever. So I started placing echo "ok"; die(); and move it line by line, stupid way but at least I could find where the error was.

it was actually triggering on


CDbCommand::query()

so I tried to dig a little further and found that the error was actually on line 115 of CDbCommand.php :


				$this->_statement=$this->getConnection()->getPdoInstance()->prepare($this->getText());

A.K.A. the prepare statement.

I tried to do an idiotic test action:


    public function actionTest() {

        $pdo = new PDO($init,$user,$pwd, array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));

        $pdo->prepare('SELECT ID, thumb_URL, selling_end_date FROM '.Items::model()->tableName());

        echo "ok";

        if (!Yii::app()->db->getAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY))

            Yii::app()->db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

        Yii::App()->db->getPdoInstance()->prepare('SELECT ID, thumb_URL, selling_end_date FROM '.Items::model()->tableName().' LIMIT 0,30');

        echo "ok2";

    }

that unexpectedly returned me "okok2"

This bug is really getting me mad since I cannot replicate on my local machine with php 5.2.12 + PDO Mysql 5.0.90

While the online machine is a sun solaris with php 5.2.5 and PDO Mysql 5.0.51

I even found a bug but I cannot get the trace for it unfortunately (not enough rights to do that): http://bugs-beta.php.net/bug.php?id=37445

Please someone enlighten me!

Switching to queryAll() fixed the problem

still a big question mark remains over my head…