例如:
$str="abc','defg";
$sql="insert into `table` (`content`) values ('$str')";
那$sql就成了:
insert into `table` (`content`) values ('abc','defg')
不就出错了吗?

解决方案 »

  1.   

    哪有这样的道理,如果这样一篇文章里有这样的字符岂不是都出错了?
    $str是一串字符串而已,肯定是整体作为一个字段插进去的,不可能不行的,还是看看你的程序其他地方有没有错
      

  2.   

    例如:
    $str="abc','defg";
    $sql="insert into `table` (`content`) values ('$str')";
    那$sql就成了:
    insert into `table` (`content`) values ('abc','defg')
    不就出错了吗?***************insert into `table` (`content`) values ($str)这样不就可以了吗?
      

  3.   

    $sql="insert into `table` (`content`) values (".AddSlashes($str).")"
    即可
    读出内容可以使用下面的函数还原:
    StripSlashes()
      

  4.   

    如果是mysql用addslashes('文本内容')就可以了
      

  5.   

    同意阿水。
    同时建议你学习一下PHP的ADODB,类似于ASP的recordset,但更强大。
      

  6.   

    谢谢各位指点
    不过我还有不明白的地方:
    <%
        dim rs,sql
        set rs=Server.CreateObject("ADODB.Recordset")
        sql="select * from table"
        rs.open sql,conn,1,1
        rs.addNew
        rs("column")="value"
        rs.update
    %>
    如果使用PHP的ADODB有没有类似上面代码的数据插入方法?
    我技术低微未能在网上找到,望高手指点
      

  7.   

    不自己写可以吗?
    通常来说asp能做的php也能做啊
      

  8.   

    什么时候该用addslashes()在php.ini里有一个参数magic_quotes_gpc ,默认是on.如果用户通过 post或get或cookie提交的数据里面带有单引号,系统自动会给其加上转义符号\,通过系统这样处理后的数据是不需要再用 addslashes()函数处理的.同时也能防止SQL注入。楼主,你的变量 $str="abc','defg" 是直接在程序里赋的值 ,里面有单引号,所以要用addslashes()函数。
      

  9.   

    如果你想知道插入数据时的具体错误在哪里,你可以在执行查询语句后,显示出错信息进行调试:
    echo mysql_error();