Неустранимая ошибка PHP: вызов функции-члена num_rows () для необъекта - PullRequest
0 голосов
/ 05 января 2012

Я работаю с MySQL вместе с ExpressionEngine 2.2.1. Эта версия ExpressionEngine автоматически поставляется с модулем запросов, который я использую для фильтрации и отображения результатов ввода из модуля под названием Freeform. Я использую Freeform версии 3.1.1. Все эти элементы хорошо работают вместе и отображают желаемые результаты на моей локальной установке. Однако когда я запускаю свой код в производство, я получаю эту ошибку:

Неустранимая ошибка: вызов функции-члена num_rows () для необъекта в /var/www/vhosts/xxxxxxxxx.com/systemxxx/expressionengine/modules/query/mod.query.php в строке 183

Вот этот раздел кода, начинающийся со строки 183 файла mod.query.php (я не кодировал этот php и никогда не кодировал php, он уже был включен в сайт, над которым я работаю):

183          if ($query->num_rows() == 0)
184          {
185          return $this->return_data = $this->EE->TMPL->no_results();
186          }

Вот как я использую модуль запросов в своем HTML-шаблоне:

{exp:query sql="SELECT first_name, last_name, email, city FROM exp_freeform_entries WHERE city = 'New York'"}
    <tr>
        <td>{first_name}</td>
        <td>{last_name}</td>
        <td>{email}</td>
        <td>{city}</td>
    </tr>
{/exp:query}

Кто-нибудь знает, почему возникает эта ошибка? Почему это происходит на производстве, а не локально?

Любая помощь будет принята с благодарностью!

Ответы [ 4 ]

0 голосов
/ 06 января 2012

Убедитесь, что база данных в Production имеет ту же структуру, что и ваша локальная среда.

Выполните следующие шаги из phpMyAdmin или вашего любимого клиента MySQL GUI:

  1. Выберите вашБаза данных ExpressionEngine
  2. Выполните следующие операторы SQL:
  3. DESCRIBE exp_freeform_fields;
  4. SELECT name FROM exp_freeform_fields;

Сравните результаты из вашей локальной базы данных MySQL сваша производственная база данных MySQL.

0 голосов
/ 05 января 2012

Похоже, что у вашего объекта $ query нет допустимого соединения. Управляйте своим именем пользователя, паролем и конфигурацией базы данных.

0 голосов
/ 06 января 2012

Включите отладку в ваших config.php и database.php, чтобы увидеть подробные сообщения об ошибках:

/ система / ExpressionEngine / Config / config.php

$config['debug'] = '1';

/ система / ExpressionEngine / конфигурации / database.php

$db['expressionengine']['db_debug'] = TRUE;

Также не мешало бы:

  • Проверьте свои учетные данные базы данных MySQL
  • Проверьте Apache и / или PHP error_log

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

0 голосов
/ 05 января 2012

Вы, вероятно, получили различное содержимое базы данных в производственных и локальных системах, поэтому в производственной системе произойдет сбой оператора, что приведет к ошибке.

Вы должны попробовать выполнить оператор в phpmyadmin или что-то в этом роде, чтобы увидеть, является ли ваш оператор sqlне содержит ошибок и не имеет конфликтов с именами.

...