当前位置:  数据库>mysql

关于Mysql查询带单引号及插入带单引号字符串问题

    来源: 互联网  发布时间:2014-10-08

    本文导语:  Mysql查询带引号和不带引号区别 当数据库字段ID为整型时 select ID from table where ID=1 和 select ID from table where ID='1' 两条sql都是可以的,但是第一条sql不用进行隐式转换,速度上比第二条sql略快一些 今天在向mysql数据库中插入带单引号...

Mysql查询带引号和不带引号区别
当数据库字段ID为整型时
select ID from table where ID=1

select ID from table where ID='1'
两条sql都是可以的,但是第一条sql不用进行隐式转换,速度上比第二条sql略快一些

今天在向mysql数据库中插入带单引号字符串的时候,什么错也没报就是语句执行失败,后来才知道,单引号等要转义,可以使用函数:mysql_real_escape_string和addslashes函数;
以下做个介绍:往数据库中插入数据之前是要先转义的,在插入数据库. 

本文很好的说明了addslashes和mysql_real_escape_string的区别,虽然国内很多PHP coder仍在依靠addslashes防止SQL注入,我还是建议大家加强中文防止SQL注入的检查。addslashes的问题在于黑客可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes无法成功拦截。

当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧。

另外对于php手册中get_magic_quotes_gpc的举例:
代码如下:



最好对magic_quotes_gpc已经开放的情况下,还是对$_POST['lastname']进行检查一下。
再说下mysql_real_escape_string和mysql_escape_string这2个函数的区别:
mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用。否则只能用 mysql_escape_string ,两者的区别是:
mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。
总结一下:
addslashes() 是强行加;
mysql_real_escape_string() 会判断字符集,但是对PHP版本有要求;
mysql_escape_string不考虑连接的当前字符集。

    
 
 

您可能感兴趣的文章:

  • 一个单引号引发的MYSQL性能问题分析
  • mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
  • mysql查询字符串替换语句小结(数据库字符串替换)
  • sqlserver、mysql获取连接字符串步骤
  • mysql中向表中某字段追加字符串的方法
  • 浅析MySQL之字符串函数
  • MySQL中随机生成固定长度字符串的方法
  • mysql截取的字符串函数substring_index的用法
  • 批量替换 MySQL 指定字段中的字符串
  • mysql获取字符串长度函数(CHAR_LENGTH)
  • mysql替换表中的字符串的sql语句
  • 用MySQL函数清除字符串首尾空白字符的方法
  • MySQL笔记之字符串函数的应用
  • mysql 截取指定的两个字符串之间的内容
  • mysql 字符串长度计算实现代码(gb2312+utf8)
  • MySQL replace函数替换字符串语句的用法
  • mysql中取字符串中的数字的语句
  • Mysql字符串截取函数SUBSTRING的用法说明
  • MySQL里实现类似SPLIT的分割字符串的函数
  • mysql like查询字符串示例语句
  • MySQL 字符串模式匹配 扩展正则表达式模式匹配
  • MySQL 字符串函数大全
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • MySQL插入数据时插入无效列的解决方法
  • mysql 10w级别的mysql数据插入
  • PHP获取Mysql插入记录ID
  • mysql 不能插入中文问题
  • Mysql的longblob字段插入数据问题解决
  • 深入mysql并发插入优化详解
  • mysql 选择插入数据(包含不存在列)具体实现
  • linu as4.0 下 mysql数据库插入时乱码问题!!!求高人解决!!!
  • 解决mysql不能插入中文Incorrect string value
  • C++操作MySQL大量数据插入效率低下的解决方法
  • C# mysql 插入数据,中文乱码的解决方法
  • python文件读写并使用mysql批量插入示例分享(python操作mysql)
  • python插入mysql数据无效
  • MySQL下将一个表的数据插入到另外一个表的实现语句
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • php 获取mysql插入数据的id值
  • mysql insert if not exists防止插入重复记录的方法
  • 用shell脚本在mysql表中批量插入数据的方法
  • 分享MYSQL插入数据时忽略重复数据的方法
  • C# 批量插入Mysql数据的实例代码
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL Workbench的下载安装与使用教程


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3