Zend Framework: модели не могут взаимодействовать с базой данных на сервере - PullRequest
0 голосов
/ 24 февраля 2010

Я только что закончил свой первый сайт, созданный на Zend Framework, и все отлично работает на моей локальной машине.

Затем я загрузил его на сервер (Godaddy), и все работает, кроме любого соединения, которое мои модели делают с базой данных. Я установил соединение с базой данных с помощью обычного PDO с учетными данными в моем application.ini, и это сработало, и я могу взаимодействовать с моделью, если она ничего не возвращает из базы данных (и снова все модели отлично работают на моем локальном компьютере ).

Мои модели выглядят так:

class Default_Model_picture extends Zend_Db_Table_Abstract 
{

    protected $_name = 'pictures';

    protected $_primary = 'id';

    public function getPicturesByCategory($category)
    {

        $query = $this->select()->from(array('pictures'), array(
           'pictures.id', 'pictures.pic_name', 'pictures.pic_desc', 
           'pictures.pic_category', 'pictures.pic_date_added', 
           'pictures.pic_larger', 'pictures.pic_url'));

        $query->where('pic_category = ?', $category);
        $query->order('pic_date_added ASC');
        $result = $this->fetchAll($query);

        return $result;    
    }    
}

это пример для модели, очевидно, я не добавил много методов.

Я понятия не имею, что делать дальше.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2010

Поскольку ваш сценарий работает на вашем локальном компьютере, первое, что я проверяю, - правильно ли вы настроили параметры подключения к базе данных в вашем приложении .ini

Попробуйте написать тестовый скрипт, который использует функции pdo сам по себе (без Zend Framework). посмотрим, есть ли у вас какие-либо ошибки

try {
    $dbh = new PDO('mysql:host=YOURHOST;dbname=YOURDBNAME', $YOURUSERNAME, $YOURPASSWORD);
    foreach($dbh->query('SELECT * from FOO') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
0 голосов
/ 24 февраля 2010

Я предполагаю, что вы правильно установили соединение db в $ db. После этого вы должны установить его как адаптер по умолчанию для Zend_Db_Table.

Zend_Db_Table::setDefaultAdapter($db);

Я просто предполагаю, что это пошло не так. Но это общая проблема, поэтому я решил все равно ответить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...