1

アプリの Web サービスとして、まったく同じ PHP スクリプトを 2 つの異なるサーバーで実行しています。1 つはすべてのクエリを実行し (5.3.15 を実行)、もう 1 つは特定のクエリを実行しません (5.3.10 を実行)。一部のクエリを実行するように指示すると、サーバー エラーが発生します。

5.3.15 を実行しているマシンは mac os x lion マシンで、もう 1 つは ubuntu 12.04 です。

何がうまくいかないのか、何か考えがありますか。クエリの例を 2 つ示します。最初のものはphp 5.3.10で動作し、2番目のものは動作しません。

働く:

$stmt = $this->db->prepare("SELECT DISTINCT b.id
            FROM a
            LEFT JOIN b
            ON a.item_id = v.id
            INNER JOIN c
            ON a.id = c.item_id
            LEFT JOIN d
            ON c.status_id = d.id
            WHERE d.property = 1");

サーバーエラー:

$stmt = $this->db->prepare("SELECT a.id AS id, d.ordering AS ordering,
            d.name AS name2,
            a.service_id AS service_id, b.name AS name, 
            c.name AS name1, a.due_date AS due_date,
            d.status AS status
            FROM a INNER JOIN b
            ON a.title_id = b.id
            LEFT JOIN c
            ON b.tv_show_id = c.id
            LEFT JOIN d
            ON a.status_id = d.id
            WHERE b.provider_id = ? 
            AND (b.film_id= ? OR b.name 
            LIKE CONCAT('%', ?, '%') OR c.name 
            LIKE CONCAT('%', ?, '%')) LIMIT 2000");

注:私はこれらのクエリに対するあらゆる種類の批判を非常に受け入れていますが、私が面倒だと言っている、またはSQLを読む必要があるとだけ言っている回答は、私にはあまり役に立ちません. また、データベース名は実際には単なる文字ではなく、セキュリティ上の理由から変更しています。

コードは(すべての名前を変更してすぐに解体する前に)php 5.3.15で問題なく実行されるため、問題は使用されている関数または何かにある可能性が最も高い.

エラーが意味をなさない場合、他に何が問題になっている可能性がありますか? クエリを mysql コンソールで直接実行したところ、完全に機能しましたが、bound_params をバインドして、渡された変数に基づいて実行すると、2 番目のクエリが失敗します。どんな助けでも大歓迎です!!

編集:

エラーメッセージは次のとおりです: SIGTERM をキャッチしました。シャットダウンしています - 調査します。助けてくれたすべてのコメンターに感謝します!

4

1 に答える 1

0

私は自分の問題に気づきました。誰かが同じことに遭遇した場合に備えて、共有します。

私のUbuntu phpにはmysqldbがインストールされておらず、単純なmysql(デフォルト)がインストールされていました。そのため、「fetch_assoc()」や「get_result()」などの関数は機能しません。回避策については、次の投稿を参照しました。

未定義のメソッド mysqli_stmt::get_result の呼び出し

于 2013-08-08T20:18:48.957 に答える