首页 > 数据库技术 > 详细

mysqli insert into时内容里面有单引号 或者说变量的里面有单引号

时间:2017-03-17 14:41:04      阅读:780      评论:0      收藏:0      [点我收藏+]

最近在做公司的一个项目,因为insert into 到mysql的过程中,一直提示1064错误,插入失败,检查了很多,本以为是中文字符的问题,后来发现,其实是内容中有单引号,导致混淆了sql语句。

下面,我将转载解决了我的疑问的那篇文章:

当使用php进行mysql insert一条语句时,发现插入失败,提示是语法错误。Fatal error: Uncaught exception ‘Exception‘ with message ‘You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘洛阳‘.查看这条语句时。发现这个洛阳这句话的地方有英文的单引号“‘”;因为单引号是mysql中的内置符号。所以要用到的话,只能转义。

例如

$content = "我们有时候去过‘洛阳‘";

$content2 = "aadsl了德古拉的两款打开";

$intro = addcslashes($content,‘\‘‘);
$antro = addcslashes($content2,‘\‘‘);
$new = sql_insert("insert into sys_union(`name,`intro`,`antro`)
       values(‘$name‘,‘$intro‘,‘$antro‘)");

其实调用php的内置函数addcslashes,就是为了将单引号转义,使其能够在内容中如果有单引号的情况下,也能够顺利的插入,而不会被报语法错误。因此将中文描述插入到数据库里的时候,要注意检测字符串的合法性,进行过滤。去空格等操作。


但是我在使用mysql 自带的replace函数时报错。不知道为什么不能直接在mysql 语句中进行转义替换。不知道什么情况。具体的replace代码,我使用报错的情况是

$new = sql_insert("insert into sys_union(`name,`intro`,`antro`)
       values(‘$name‘,replace($content,‘\‘‘,‘\‘‘),replace($content2,‘\‘‘,‘\‘‘),)");

但是我在phpmyadmin里面执行却是正确的。也被正确的替换掉了,插入也正确。但在php 里面执行却报错。不知道什么情况。

 

以上是她的文章,最后她说到的这个情况,我并没有亲自去实验,不晓得可不可以,等后边有时间了再来一起探讨。

mysqli insert into时内容里面有单引号 或者说变量的里面有单引号

原文:http://www.cnblogs.com/yehai/p/6565629.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!