是否有一些代码可以用来过滤字符串,将转义字符放在无效的 MySQL 字符前面?
我正在网站上构建评论部分,我需要能够过滤字符串并转义无效字符?
是否有任何代码可以自动执行此操作并返回正确放置转义字符的字符串?
顺便说一句,我使用 PHP。
I'm building a comment section on my website and I need to be able to filter through strings and escape invalid characters?
Is there any code that can automate this and return a string with escape characters properly placed?
I use PHP btw.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您想要
mysql_real_escape_string()
,或者用 PDO 之类的东西绑定你的参数。You want
mysql_real_escape_string()
, or bind your params with something like PDO.使用内置的 msyql_ 函数: mysql_real_escape_string 。
Use the built-in msyql_ functions: mysql_real_escape_string.
使用绑定变量通常比仅仅转义字符串更好。
首先,我会重复一下党的路线,即你应该真正考虑学习使用数据库抽象层或 ORM,因为从长远来看这会更好。我将把关于使用哪个包(以及 PDO 的优点等)的圣战留给其他人。
如果您使用的是最新版本的 PHP,您应该拥有 MySQLi(MySQL 改进的扩展)。
此扩展允许绑定参数,如下所述:
http://php.net /manual/en/mysqli-stmt.bind-param.php
另请注意,虽然转义字符串是一个好的开始,但这还不够。
看:
是 htmlentities() 和 mysql_real_escape_string () 足以清理 PHP 中的用户输入吗?
Using bound variables is generally better practice than just escaping a string.
First I'll parrot the party line that you should really consider learning to use a database abstraction layer or ORM as this will be better in the long term. I'll leave the holy wars about which package to user for this (and the merits of PDO, etc..) to someone else.
If you're using a recent version of PHP you should have the MySQLi (MySQL improved extension).
This extension allows bound parameters as explained here:
http://php.net/manual/en/mysqli-stmt.bind-param.php
Also note that while escaping a string is a good start, it's NOT enough.
see:
Is htmlentities() and mysql_real_escape_string() enough for cleaning user input in PHP?