0

たくさんのフィールドを持つフォームがあります。ユーザーは、一重引用符を含む情報や説明を提供することがあります。

Jquery と CI を使用してデータを検証しています。問題は、明らかに ActiveRecord が一重引用符をエスケープしていないため、データの挿入/更新でエラーが発生することです。

ActiveRecord はこれらの文字を自動的にエスケープするはずではありませんか? そうでない場合、ユーザー入力で一重引用符を処理する通常の方法は何ですか?

挿入を処理するモデル関数のコード例:

public function setLicense($dataArray, $data_id="")
{
    $iRows  = 0; // Rows found.
    $DB = $this->load->database('some_database',TRUE,TRUE);

    //var_dump($dataArray);
    if(empty($dataArray))
        return(FALSE);

    if(!empty($data_id))
    {
        $DB->where('idx',$data_id);
        $iRows=$DB->count_all_results('some_table');
    }
    else
    {
        if(isset($LicenseData['idx']))
        {
            $license = $LicenseData['idx'];
            $DB->where('idx',$license);
            $iRows=$DB->count_all_results('some_table');
        }
    }
    if(!$iRows)
        $DB->insert('some_table',$dataArray);
    else
    {   
        $DB->where('idx',$data_id);
        $DB->update('some_table',$dataArray);
    }
    return(TRUE);
}
4

1 に答える 1

1

あなたが説明している動作は、ODBC db ドライバーと接続するときに意図的に行われているようです。以下は、この Ellislab フォーラムのディスカッションからの引用です。

ODBC の性質上、CodeIgniter がそれがどれであるかを知る方法がなくても、ほとんどすべてのデータベース プラットフォームを使用できます。また、データベースごとに異なるエスケープ文字とルールがあるため、この種のエスケープを行うかどうかはユーザー次第です。

于 2013-01-02T20:08:30.807 に答える