0

私は次の問題を抱えています:

$sql = "SELECT e.*, c.name city_name, u.*, IF(l.item IS NULL, 0, 1) as iLike, DATE_FORMAT(e.date, '%h:%i') hour, DATE_FORMAT(e.date, '%d/%c/%Y') day,  DATE_FORMAT(e.date, '%c') month
FROM `events` e
LEFT OUTER JOIN `like` l ON l.item = e.uuid AND l.user = :user
            LEFT OUTER JOIN city c ON c.city = e.city
            LEFT OUTER JOIN user u ON u.user = e.user
            WHERE
             e.deleted = 0
            AND DATE(e.date) >= CURDATE()
            AND e.user = :user
            ORDER by e.date ASC
            ";
    $select = $eventsModel->getAdapter();
    $select->setFetchMode(Zend_Db::FETCH_ASSOC);
    $prepare = $select->query($sql, array('user'=>$this->user_id));

このコードは、クエリに:userをハードコーディングすると結果を返します。例:

$sql = "SELECT e.*, c.name city_name, u.*, IF(l.item IS NULL, 0, 1) as iLike, DATE_FORMAT(e.date, '%h:%i') hour, DATE_FORMAT(e.date, '%d/%c/%Y') day,  DATE_FORMAT(e.date, '%c') month
            FROM `events` e
            LEFT OUTER JOIN `like` l ON l.item = e.uuid AND l.user = 23
            LEFT OUTER JOIN city c ON c.city = e.city
            LEFT OUTER JOIN user u ON u.user = e.user
            WHERE
             e.deleted = 0
            AND DATE(e.date) >= CURDATE()
            AND e.user = 23
            ORDER by e.date ASC
            ";
    $select = $eventsModel->getAdapter();
    $select->setFetchMode(Zend_Db::FETCH_ASSOC);
    $prepare = $select->query($sql);

これは、コードを新しいサーバーに移動したときにのみ発生し始めました。新しいOSはDebian 6、squeze、mysql 5.5、PHP5.3.21です。

ありがとうございました、

4

1 に答える 1

1

?代わり:userに と$this->user_idの代わりに使用array('user'=>$this->user_id)

JOINさらに、ステートメントでデータをバインドすることはできません。l.user = e.user

$sql = "SELECT e.*, c.name city_name, u.*, IF(l.item IS NULL, 0, 1) as iLike, DATE_FORMAT(e.date, '%h:%i') hour, DATE_FORMAT(e.date, '%d/%c/%Y') day,  DATE_FORMAT(e.date, '%c') month
            FROM `events` e
            LEFT OUTER JOIN `like` l ON l.item = e.uuid AND l.user = e.user
            LEFT OUTER JOIN city c ON c.city = e.city
            LEFT OUTER JOIN user u ON u.user = e.user
            WHERE
             e.deleted = 0
            AND DATE(e.date) >= CURDATE()
            AND e.user = ?
            ORDER by e.date ASC
            ";
    $select = $eventsModel->getAdapter();
    $select->setFetchMode(Zend_Db::FETCH_ASSOC);
    $prepare = $select->query($sql, array($this->user_id));
于 2013-02-12T17:47:05.077 に答える