当使用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
里面执行却报错。不知道什么情况。