0

ExpressionEngine 2.2.1 と組み合わせて MySQL を使用しています。このバージョンの ExpressionEngine には、クエリ モジュールが自動的に付属しています。これを使用して、Freeform というモジュールからのエントリ結果をフィルター処理および表示しています。Freeform バージョン 3.1.1 を使用しています。これらの要素はすべてうまく連携しており、ローカル セットアップで目的の結果を表示しています。ただし、コードを本番環境にプッシュすると、次のエラーが発生します。

致命的なエラー: 183 行目の /var/www/vhosts/xxxxxxxxx.com/systemxxx/expressionengine/modules/query/mod.query.php の非オブジェクトに対するメンバー関数 num_rows() の呼び出し

これは、mod.query.php の 183 行目から始まるコードのこのセクションです (私はこの 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

4 に答える 4

0

本番環境のデータベースがローカル環境と同じ構造になっていることを確認してください。

phpMyAdminまたはお気に入りのMySQLGUIクライアントから次の手順を実行します。

  1. ExpressionEngineデータベースを選択します
  2. 次のSQLステートメントを実行します。
  3. DESCRIBE exp_freeform_fields;
  4. SELECT name FROM exp_freeform_fields;

ローカルMySQLデータベースの結果を本番MySQLデータベースと比較します。

于 2012-01-05T21:54:27.907 に答える
0

本番システムとローカル システムでデータベースの内容が異なる可能性があるため、本番システムではステートメントが失敗し、エラーが発生します。

phpmyadmin などでステートメントを実行して、SQL ステートメントにエラーがなく、名前付けとの競合がないかどうかを確認する必要があります。

于 2012-01-05T14:29:25.200 に答える
0

$query オブジェクトに有効な接続がないようです。ユーザー名、パスワード、およびデータベース構成を制御します。

于 2012-01-05T14:35:19.093 に答える
0

でデバッグを有効にしてconfig.phpdatabase.php詳細なエラー メッセージを表示します。

/system/expressionengine/config/config.php

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

/system/expressionengine/config/database.php

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

次のことも問題ありません。

  • MySQL データベースの資格情報を確認する
  • Apache や PHP を確認してくださいerror_log

これらの手順により、問題をより深く理解できることを願っています。

于 2012-01-05T21:43:27.313 に答える