1

昨日、データベーススキーマを変更し、その結果、アプリケーションのデータベースクエリを変更しました。それ以来、500の内部サーバーエラーが発生しています。モデルから実行し、コントローラーから配列を出力できるため、問題はクエリではないと思います。テンプレートを作成するときに問題があるようです。

以下は私のコードです、

モデル

public function searchCandidates($type=null, $gender=null, $age=null)
    {
        if($age != "0") {
            $age = implode(", %",$age);
        }

        $sql = 'SELECT `candidates`.`candidate_id`, 
                        `candidates`.`first_name`, 
                        `candidates`.`surname`, 
                        `candidates`.`DOB`, 
                        `candidates`.`gender`, 
                        `candidates`.`talent`, 
                        `candidates`.`location`, 
                        `candidates`.`availability`,
                        `candidates`.`youtube_showreel_1`,
                        `candidates`.`youtube_showreel_2`,
                        `candidates`.`youtube_showreel_3`,
                        `candidates`.`youtube_showreel_4`,
                        `candidates`.`youtube_showreel_5`,
                        `candidates`.`youtube_showreel_desc_1`,
                        `candidates`.`youtube_showreel_desc_2`,
                        `candidates`.`youtube_showreel_desc_3`,
                        `candidates`.`youtube_showreel_desc_4`,
                        `candidates`.`youtube_showreel_desc_5`,
                        `candidates`.`date_created`,
                         DATE_FORMAT(NOW(), "%Y") - DATE_FORMAT(`candidates`.`DOB`, "%Y") - (DATE_FORMAT(NOW(), "00-%m-%d") < DATE_FORMAT(`candidates`.`DOB`, "00-%m-%d")) as `age`,
                        `candidate_assets`.`url`, 
                        `candidate_assets`.`asset_size`
                FROM `candidates`
                LEFT JOIN `candidate_assets` ON `candidate_assets`.`candidates_candidate_id` = `candidates`.`candidate_id`
                WHERE `candidates`.`availability` = "yes"';
                //is there a certain criteria
                if($type != "0") { $sql .= 'AND `candidates`.`talent` = '.$type; }
                if($age != "0") { $sql .= 'AND `candidates`.`playing_age` LIKE "%'.$age.'%"';}
                if($gender != false){ $sql .= 'AND `candidates`.`gender` = '.$gender; }
                $sql .= ' GROUP BY `candidates`.`candidate_id`';

        $query = $this->db->query($sql);

        //die(print_r($query->result_array()));

        //die($this->db->last_query());
        return $query->result_array();
    }

コントローラ

$data['results'] = 

$this->candidates_model->searchCandidates($this->input->post('type'), $this->input->post('gender'), $this->input->post('age')); 
            $this->session->set_userdata('search', $data['results']);
            //die(print_r($this->session->userdata('search')));
            $this->template->build('search/results', $data);

エラーログのエラーは次のようになります。

[2011年12月9日金曜日10:28:49][エラー][クライアントxx.xx.xx.xxx]スクリプトからの不正な形式のヘッダー。不正なヘッダー=Bs%3A2%3A%2259%22%3Bs%3A10%3A%:index.php、リファラー: http: //urbantalent.factoryagency.co.uk/search

4

3 に答える 3

5

私の推測では、ci_session Cookie に入れようとしているものが多すぎるということです。値の一部は適切にエンコードされていない可能性があり、有効なヘッダーのようには見えません。set-cookie HTTP ヘッダーが間違っているため、「ヘッダーの形式が正しくありません」というエラーが発生します。この Cookie に入れるものを制限することから始めます。可能であれば、おそらく無効にする/まったく使用しないでください(コードをデバッグしている間は一時的に)

次に、動的 SQL を修正します。各「AND」の前にスペースが必要です。

.gender もおそらく二重引用符で囲む必要があります。

編集:はい、今、私はさらに確信しています。sico87 - これはあなたのサイトからのライブです (以下を参照してください - 非常に長い文字列で申し訳ありません)。この Cookie のサイズは 8K に近いです。HTTP ヘッダーのサイズには一定の制限があります。そしてApacheのメモリからは8Kです。したがって、私の最善の推測 (はい、推測です!) は、特定の状況下で 8K を超える値を Cookie に入れると、この要求が失敗するということです。解決策は、Cookie を使用して大量のデータを保存/転送しないことです。

ci_session=a%3A5%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%22f80a32998134fc9d24ee7cf0ee41592a%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A13%3A%2299.99.99.99%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A70%3A%22Mozilla%2F5.0+%28compatible%3B+MSIE+9.0%3B+Windows+NT+6.1%3B+WOW64%3B+Trident%2F5.0%29%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1323429638%3Bs%3A7%3A%22search1%22%3Ba%3A15%3A%7Bi%3A0%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2252%22%3Bs%3A10%3A%22first_name%22%3Bs%3A4%3A%22Eric%22%3Bs%3A7%3A%22surname%22%3Bs%3A10%3A%22James+Dean%22%3Bs%3A6%3A%22gender%22%3Bs%3A4%3A%22male%22%3Bs%3A6%3A%22talent%22%3Bs%3A5%3A%22actor%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A42%3A%22http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D5OIiZLo50Hc%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-24+12%3A06%3A53%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2256%22%3Bs%3A3%3A%22url%22%3Bs%3A27%3A%22resized_Eric_Dean_web_1.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A1%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2253%22%3Bs%3A10%3A%22first_name%22%3Bs%3A7%3A%22Matthew%22%3Bs%3A7%3A%22surname%22%3Bs%3A8%3A%22Holbrook%22%3Bs%3A6%3A%22gender%22%3Bs%3A4%3A%22male%22%3Bs%3A6%3A%22talent%22%3Bs%3A5%3A%22actor%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A42%3A%22http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DZBJPV2YnXvk%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-24+09%3A40%3A38%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2230%22%3Bs%3A3%3A%22url%22%3Bs%3A28%3A%22resized_Matthew_Holbrook.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A2%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2254%22%3Bs%3A10%3A%22first_name%22%3Bs%3A5%3A%22Steve%22%3Bs%3A7%3A%22surname%22%3Bs%3A6%3A%22Murphy%22%3Bs%3A6%3A%22gender%22%3Bs%3A4%3A%22male%22%3Bs%3A6%3A%22talent%22%3Bs%3A5%3A%22actor%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A0%3A%22%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-18+10%3A06%3A43%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2245%22%3Bs%3A3%3A%22url%22%3Bs%3A24%3A%22resized_Steve_Murphy.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A3%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2255%22%3Bs%3A10%3A%22first_name%22%3Bs%3A7%3A%22Anthony%22%3Bs%3A7%3A%22surname%22%3Bs%3A5%3A%22Berry%22%3Bs%3A6%3A%22gender%22%3Bs%3A4%3A%22male%22%3Bs%3A6%3A%22talent%22%3Bs%3A5%3A%22actor%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A42%3A%22http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DGXB4_Q6oNUk%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-23+05%3A40%3A51%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2230%22%3Bs%3A3%3A%22url%22%3Bs%3A25%3A%22resized_Anthony_Berry.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A4%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2256%22%3Bs%3A10%3A%22first_name%22%3Bs%3A4%3A%22Emma%22%3Bs%3A7%3A%22surname%22%3Bs%3A5%3A%22Beard%22%3Bs%3A6%3A%22gender%22%3Bs%3A6%3A%22female%22%3Bs%3A6%3A%22talent%22%3Bs%3A5%3A%22actor%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A42%3A%22http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DfUBF8L9pV1Q%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-23+05%3A41%3A45%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2228%22%3Bs%3A3%3A%22url%22%3Bs%3A28%3A%22resized_Emma_Beard_web_1.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A5%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2257%22%3Bs%3A10%3A%22first_name%22%3Bs%3A10%3A%22John-Henry%22%3Bs%3A7%3A%22surname%22%3Bs%3A6%3A%22Carter%22%3Bs%3A6%3A%22gender%22%3Bs%3A4%3A%22male%22%3Bs%3A6%3A%22talent%22%3Bs%3A5%3A%22actor%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A0%3A%22%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-23+05%3A42%3A19%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2234%22%3Bs%3A3%3A%22url%22%3Bs%3A35%3A%22resized_John_Carter_website_pic.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A6%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2258%22%3Bs%3A10%3A%22first_name%22%3Bs%3A7%3A%22Melanie%22%3Bs%3A7%3A%22surname%22%3Bs%3A5%3A%22Clare%22%3Bs%3A6%3A%22gender%22%3Bs%3A6%3A%22female%22%3Bs%3A6%3A%22talent%22%3Bs%3A5%3A%22actor%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A0%3A%22%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-23+05%3A42%3A52%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2242%22%3Bs%3A3%3A%22url%22%3Bs%3A18%3A%22resized_images.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A7%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2259%22%3Bs%3A10%3A%22first_name%22%3Bs%3A7%3A%22Phoenix%22%3Bs%3A7%3A%22surname%22%3Bs%3A3%3A%22Lee%22%3Bs%3A6%3A%22gender%22%3Bs%3A4%3A%22male%22%3Bs%3A6%3A%22talent%22%3Bs%3A9%3A%22presenter%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A0%3A%22%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-24+09%3A15%3A08%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2231%22%3Bs%3A3%3A%22url%22%3Bs%3A36%3A%22resized_Phoenix_Lee_-_14.10_.04_.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A8%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2260%22%3Bs%3A10%3A%22first_name%22%3Bs%3A5%3A%22Holly%22%3Bs%3A7%3A%22surname%22%3Bs%3A5%3A%22Bryan%22%3Bs%3A6%3A%22gender%22%3Bs%3A6%3A%22female%22%3Bs%3A6%3A%22talent%22%3Bs%3A9%3A%22presenter%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A0%3A%22%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-24+09%3A30%3A32%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2223%22%3Bs%3A3%3A%22url%22%3Bs%3A29%3A%22resized_Holly_Bryan_web_1.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A9%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2261%22%3Bs%3A10%3A%22first_name%22%3Bs%3A5%3A%22Susie%22%3Bs%3A7%3A%22surname%22%3Bs%3A4%3A%22Juul%22%3Bs%3A6%3A%22gender%22%3Bs%3A6%3A%22female%22%3Bs%3A6%3A%22talent%22%3Bs%3A9%3A%22presenter%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A0%3A%22%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-24+09%3A31%3A56%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2254%22%3Bs%3A3%3A%22url%22%3Bs%3A28%3A%22resized_Susie_Juul_web_1.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A10%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2262%22%3Bs%3A10%3A%22first_name%22%3Bs%3A4%3A%22Neil%22%3Bs%3A7%3A%22surname%22%3Bs%3A7%3A%22Lumberg%22%3Bs%3A6%3A%22gender%22%3Bs%3A4%3A%22male%22%3Bs%3A6%3A%22talent%22%3Bs%3A9%3A%22presenter%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A42%3A%22http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D7QDWDtm3tgs%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-24+09%3A32%3A34%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2227%22%3Bs%3A3%3A%22url%22%3Bs%3A30%3A%22resized_Neil_Lumberg_web_1.jpg%22%3Bs%3A10%3A%22asset_size%22%3Bs%3A5%3A%22large%22%3B%7Di%3A11%3Ba%3A12%3A%7Bs%3A12%3A%22candidate_id%22%3Bs%3A2%3A%2263%22%3Bs%3A10%3A%22first_name%22%3Bs%3A5%3A%22Megan%22%3Bs%3A7%3A%22surname%22%3Bs%3A7%3A%22Roberts%22%3Bs%3A6%3A%22gender%22%3Bs%3A6%3A%22female%22%3Bs%3A6%3A%22talent%22%3Bs%3A9%3A%22presenter%22%3Bs%3A12%3A%22availability%22%3Bs%3A3%3A%22yes%22%3Bs%3A18%3A%22youtube_showreel_1%22%3Bs%3A0%3A%22%22%3Bs%3A23%3A%22youtube_showreel_desc_1%22%3BN%3Bs%3A12%3A%22date_created%22%3Bs%3A19%3A%222011-11-24+09%3A33%3A16%22%3Bs%3A3%3A%22age%22%3Bs%3A2%3A%2214%22%3Bs%3A3%3A%22url%22%3B
于 2011-12-09T10:56:54.147 に答える
1

まず最初に、SQL ステートメントを echo() し (次に die()、エラーが発生しないようにします)、SQL ツールで試してみて、何が起こるかを確認します。これはバグのある SQL ステートメントであるか、何らかの理由で SQL エンジンが気に入らないだけだと思います。そのため、「500 Internal Server error」ではなく、詳細なエラー メッセージを表示するようにしてください。

于 2011-12-09T10:52:25.713 に答える
-1

たぶん、これを変更する必要があります

if($type != "0") { $sql .= 'AND `candidates`.`talent` = '.$type; }
            if($age != "0") { $sql .= 'AND `candidates`.`playing_age` LIKE "%'.$age.'%"';}
            if($gender != false){ $sql .= 'AND `candidates`.`gender` = '.$gender; }

if($type != "0") { $sql .= ' AND `candidates`.`talent` = '.$type; }
            if($age != "0") { $sql .= ' AND `candidates`.`playing_age` LIKE "%'.$age.'%"';}
            if($gender != false){ $sql .= ' AND `candidates`.`gender` = '.$gender; }
于 2011-12-09T10:41:09.710 に答える