Dec 20

PHP . MySQL . RegExp . 正则表达式 不指定

felix021 @ 2008-12-20 00:25 [IT » 网络] 评论(0) , 引用(0) , 阅读(6554) | Via 本站原创 | |
做校赛的报名系统,插入队伍的时候要考虑队名是否重复,于是想到了使用MySQL的正则表达式。
以前虽然一直知道MySQL有正则表达式,但是因为有LIKE在,所以一直还不需要用它。
正好这次有了机会,就去试试吧。

MySQL的关键字 REGEXP 允许在SQL语句中匹配忽略大小写的POSIX正则表达式。
其实MySQL的文档里面写得非常详细了,给出了很多的例子,可以在这里看到
http://dev.mysql.com/doc/refman/5.1/zh/regexp.html

这里主要是记录一下在PHP里面还需要进行怎样的处理:
其实很简单,两个函数:

1。preg_quote()
转义正则表达式中的特殊字符,详情参见 http://cn.php.net/preg_quote
这本来是PHP为PCRE的正则表达式准备的,不过这里也是可以用的。

2。mysql_real_escape_string()
这个函数是用来转义特殊的SQL字符,同时也可以防止SQL注入攻击。
PHP文档的说明为:
本函数将 unescaped_string 中的特殊字符转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。
它有一个兄弟,mysql_escape_string(),不过不能针对当前字符集进行处理,所以不够安全
另外如果使用mysqli的话,也可以使用mysqli_real_escape_string()。

综合起来就是这样:
$team_name = mysql_real_escape_string(preg_quote($team_name));
$query = " SELECT * FROM `teams` WHERE `team_name` REGEXP '{$team_name}' ";
然后再ooxx地去查询吧。。。



欢迎扫码关注:




转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   *非必须
网址   电邮   [注册]