2017-10-19 4 views
0

私はCodeIgniterを使用していますが、いくつかの入力フィールドを持つ式があります。問題は、 "&"のような入力フィールドに特殊文字を書き込むと、&という名前で保存され、値を編集するためにフォームをリロードすると、このように表示されるということです。 これは多くのエラーにつながり、解決する必要があります。値は "&"として保存する必要があります。PHP/MySQL - フォーム入力値 "&"は "&"として保存されます

私はそのような入力フィールドにform_validationを使用します。

$this->form_validation->set_rules("input1", "Name", "required|trim"); 
$this->form_validation->set_rules("input2", "Name", "required|trim"); 

その後、私は、アレイ内のすべての入力を書いて、モデル内の関数にそれを手渡す:

$input= array(); 
$input["input1"] = set_value("input1"); 
$input["input2"] = set_value("input2"); 
$this->MInput->update_input($input_id, $input); 

モデル

function update_input($input_id, $input) { 
    if($this->db->update("pa_it_input", $input, "id = $input_id") === FALSE) { 
     $error = $this->db->error(); 
     log_message("error", "Database error in MInput [".$error["code"]."] ".$error["message"]); 
     return FALSE; 
    } 

エラーの原因はわかりません。私はすでに、すべてのテーブルがUTF-8に設定されていることと、UTF-8でページが読み込まれていることを確認しました。

+0

文字列を渡すインターフェースのドキュメントは、 '&'& '&'のような文字列と文字列について何を言っていますか? [mcve]も読んで行動してください。 – philipxy

+0

これは以下のffリンクに似ています:https://stackoverflow.com/questions/11704233/the-best-way-to-store-ampersand-in-mysql-database AND https://stackoverflow.com/questions/ 3545735 /データベースのアンパサンドを格納 – Riyenz

+0

あなたのフォームに関連している可能性があります。それを示してください。 formhelpersまたは 'form_prep()'を使う –

答えて

0

これにはPHPが関係していますか?どのバージョンのPHPですか?それは "マジック引用符"がオンになっていますか?

htmlentities()を呼び出すコードはありますか?

& - >&は、「UTF-8」の問題ではなく「HTMLエンティティ」の問題です。

CodeIgniterとは何ですか?おそらく、このような何か無礼な変化?入って来る 'form'テキストの唯一の使い方はHTMLに書くことだと仮定するのは間違いです。あなたのケースでは、異なるエスケープ機構が必要なMySQLに入っています。

関連する問題