lain_gmail
masao****@gmail*****
2011年 7月 5日 (火) 11:39:59 JST
kenji 様 ご回答いただきありがとうございます。 元々使いまわしているエスケープ関数がありましたので、CodeIgniterでの動作が気になって質問させていただきました。 同じということであれば他のフレームワークと違い、CodeIgniterは作法も緩いのでその場に併せて適宜利用していきたいと思います。 2011年7月1日13:42 Kenji Suzuki <kenji****@gmail*****>: > Kenji です。 > > > On Fri, 1 Jul 2011 13:15:12 +0900 > lain_gmail <masao****@gmail*****> wrote: > > > ガレリアといいます。 > > > > SQLでのエスケープでまだ理解できていない部分があるのですが > > > > *$this->db->escape()* > > と > > mysql_real_escape_string() > > > > は同等の処理と考えていいのでしょうか?* > > データベースドライバが mysql であるなら、部分的にはそうですね。 > http://codeigniter.jp/user_guide_ja/database/queries.html > > > 実際には、以下のようなコードになっています。 > > system/database/DB_driver.php: > > /** > * "Smart" Escape String > * > * Escapes data based on type > * Sets boolean and null types > * > * @access public > * @param string > * @return mixed > */ > function escape($str) > { > if (is_string($str)) > { > $str = "'".$this->escape_str($str)."'"; > } > elseif (is_bool($str)) > { > $str = ($str === FALSE) ? 0 : 1; > } > elseif (is_null($str)) > { > $str = 'NULL'; > } > > return $str; > } > > > system/database/drivers/mysql/mysql_driver.php: > > /** > * Escape String > * > * @access public > * @param string > * @param bool whether or not the string will be used in a > LIKE condition > * @return string > */ > function escape_str($str, $like = FALSE) > { > if (is_array($str)) > { > foreach ($str as $key => $val) > { > $str[$key] = $this->escape_str($val, $like); > } > > return $str; > } > > if (function_exists('mysql_real_escape_string') AND > is_resource($this->conn_id)) > { > $str = mysql_real_escape_string($str, > $this->conn_id); > } > elseif (function_exists('mysql_escape_string')) > { > $str = mysql_escape_string($str); > } > else > { > $str = addslashes($str); > } > > // escape LIKE condition wildcards > if ($like === TRUE) > { > $str = str_replace(array('%', '_'), array('\\%', > '\\_'), $str); > } > > return $str; > } > > > // Kenji > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > -------------- next part -------------- HTMLの添付ファイルを保管しました... Download