php – 没有连接的多字节mysql_real_escape_string?
发布时间:2020-12-13 22:29:51 所属栏目:PHP教程 来源:网络整理
导读:让我们考虑一下我会做的 SET NAMES 'utf8' 到mysql连接(所以我需要多字节转义). 是否有一个安全的替代mysql_real_escape_string不需要mysql连接? 在官方页面中,我发现了一个使用str_replace的comment,如下所示: if(!empty($inp) is_string($inp)) { return
让我们考虑一下我会做的
SET NAMES 'utf8' 到mysql连接(所以我需要多字节转义). 是否有一个安全的替代mysql_real_escape_string不需要mysql连接? 在官方页面中,我发现了一个使用str_replace的comment,如下所示: if(!empty($inp) && is_string($inp)) { return str_replace(array(''," ","n","r","'",'"',"x1a"),array('\',' ','n','r',"'",'"','Z'),$inp); } 这够了吗? 为什么mysql_real_escape_string需要当前的charcaterset,如果它只会逃避相同的值? (如官方页面php.net/mysql_real_escape_string中所述) 谢谢 解决方法
首先,有很多数据库抽象库
(我之前使用过dbFacile:https://github.com/alanszlosek/dbFacile). sql准备语句也总是一个好主意. 但是对于你的实际问题…… 来自这篇文章:Alternative to mysql_real_escape_string without connecting to DB 我真的认为这是一个很好的选择: public function escape($string) { $return = ''; for($i = 0; $i < strlen($string); ++$i) { $char = $string[$i]; $ord = ord($char); if($char !== "'" && $char !== """ && $char !== '' && $ord >= 32 && $ord <= 126) $return .= $char; else $return .= 'x' . dechex($ord); } return $return; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |