1

データを取得するためにCSqlDataProviderを使用しています。私は自分でクエリを作成します。

mysqlクエリの作成中に文字列をエスケープするにはどうすればよいですか?

使ってみましmysql_real_escape_stringたが動かない

$count=Yii::app()->db->createCommand($this->constructCountQuery())->queryScalar();      
        return $dataProvider = new CSqlDataProvider($this->constructDataQuery(), array(
            'totalItemCount'=>$count,
            'sort'=>array(
                'attributes'=>array(
                      'clinic_name', 'doctor_name','country'
                ),
            ),
            'pagination'=>array(
                'pageSize'=>10,
            ),

        ));
4

1 に答える 1

2

名前付きパラメーターを使用し、paramsプロパティを使用してパラメーターを指定します。Yii の PDO は自動的に文字列をエスケープします

例えば

$dataProvider = new CSqlDataProvider('SELECT * FROM posts WHERE `title`=:title', array(
            'totalItemCount'=>$count,
            'params'=>array(
                   ':title'=>$title,
            ),
            'sort'=>array(
                'attributes'=>array(
                      'clinic_name', 'doctor_name','country'
                ),
            ),
            'pagination'=>array(
                'pageSize'=>10,
            ),

        ));
于 2012-11-12T12:06:28.943 に答える