php提交表单内容有单引号,mysql执行时遇见错误的解决方法。

首先看一下问题所在。

"INSERT INTO tg_article(

tg_username,

tg_type,

tg_title,

tg_content,

tg_date

)

VALUES(

‘{$_clean[‘username‘]}‘,

‘{$_clean[‘type‘]}‘,

‘{$_clean[‘title‘]}‘,

‘{$_clean[‘content‘]}‘,

NOW()

)

"

大家会发现党要提交的内容还有单引号的时候,value是里面就会出现单引号套单引号,这是明显的错误,这也是在网站开发中经常遇到的现象和易忽略的问题。接下来给大家讲怎么解决。

1. 对于magic_quotes_gpc=on的情况,

我们可以不对输入和输出数据库的字符串数据作

addslashes()和stripslashes()的操作,数据也会正常显示。

如果此时你对输入的数据作了addslashes()处理,

那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。

2. 对于magic_quotes_gpc=off 的情况

必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出

因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。

创建一个转义函数,并对内容转义

function _mysql_string($_string){
    //get_magic_quotes_gpc()如果开启状态就不用转义,否则要z转义
  //  if(!GPC){
       // return @mysql_escape_string($_string);
   // }else{
        //return $_string;
   // }
    if(GPC){
        if(is_array($_string)){
            foreach ($_string as $_key=>$_value){
                $_string[$_key] = _mysql_string($_value);
                $_string[$_key] = addslashes($_string[$_key]);
            }
        }else{
            $_string = @mysql_real_escape_string($_string);
        }
    }
        return $_string;
}
 //接受内容
        $_clean = array();
        $_clean['username'] = $_COOKIE['username'];
        $_clean['type'] = $_POST['type'];
        $_clean['title'] = $_POST['title'];
        $_clean['content'] = $_POST['content'];
        _mysql_string($_clean);
时间: 2024-10-06 08:13:21

php提交表单内容有单引号,mysql执行时遇见错误的解决方法。的相关文章

“网站内容可以显示但在页面底部提示错误”的解决方法

“网站内容可以显示但在页面底部提示错误”的解决方法 今天阿D遇到一个问题,客户网站内容可以正常访问,但是网站尾部都出现数据库等一大推错误提示,如下图 起初以为是网站权限问题,设置好权限,还是提示这个错误,然后又去纠结数据库文件和数据库配置文件是否修改好,都检查无误,依旧提示这个错误,最后根据那个warning的路径,发现tplcache 下好多缓存文件,然后把这些在这个目录下新建个目录,把所有缓存文件拖进新建的那个目录,再次访问,就正常了 总结:网站可以正常打开,多了一堆后缀,首先要去看错误提示

创建SQL作业错误的解决方法(不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs';列不允许有空值。)

在用SQL语句创建SQL Server作业时有时出现如下错误: 消息 515,级别 16,状态 2,过程 sp_add_job,第 137 行 不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs':列不允许有空值.INSERT 失败. 语句已终止. 这可能与为作业创建的数据库登录ID有关,这个登录ID需要是数据库的所有者(我的是sa),因此将 @owner_login_name=N'HYSERITC003/wellcomm', 中的N'HYSERITC00

关于有他表关联的字段,赋值时候存在的字符转数字错误的解决方法

快速开发平台中,客户进行二次构建开发,有一个注册人员的功能,在选中一个岗位后,点击注册人员,发现有时候正常,有时候不正常.不正常的时候出现的错误如下: failed to convert parameter value from a string to  a int32.记录部件1.SetFieldValue("GANGWEIID",Me.GetParam("岗位ID")) 通过这个错误代码发现,是给记录部件的GANGWEIID字段赋值时,出现的,于是  msgbo

关于SVN提交时报out-of-date错误的解决方法

今天,在提交代码的时候,一直在报错,告诉我说out-of-date的问题.如下所示: 然后,自己在度娘上找了一个办法,把问题解决了.现分享如下: 在相应文件上,单击选择team,然后选择先更新,然后再提交.这样就好了.

C# Winform 中webBrowser显示html内容时禁止错误提示的方法

在winform中有一个控件可以显示html的内容,该控件就是webbrowser,设置它的DocumenText属性为HTML的内容即可. 在使用WebBrowser做UI的时候,我们有时不希望里面的链接被用户点击,更不希望弹出烦人的脚本错误提示框,也不希望用户能点出右键的IE菜单,要做到这些,其实都是很easy地… //设置webBrowser webBrowser1.ScriptErrorsSuppressed = true; //禁用错误脚本提示 webBrowser1.IsWebBro

使用AFNetworking框架时,出现不可接受内容类型错误的解决方法

在使用AFNetworking 3.0时出现了这个问题: Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/plain" 以下为代码展示 1 Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request fa

转:关于PLSQL Developer报"动态执行表不可访问,本会话的自动统计被禁止"错的解决方法

这个报错信息在不同的PL/SQL Developer版本都会出现,从上面详细的报错提示信息中我们可以判断得到,报错原因不在工具本身. 在此,详细记录一下这个小问题的三种处理方法. 1.第一种处理方法(不推荐) 就是在报错的Error对话框中将"Don't show this message again"选项选中,下次就不在提示这个错误了. 这种方法应该可以叫做"鸵鸟方式"的处理方法.没有从根本上解决这个问题. 2.第二种处理方法(可以采纳) 报错信息中描述的非常详细

hive中执行hql或建表语句时,抛出Display all 459 possibilities? (y or n)错误的解决方法

我昨天在hive上建表,一直报Display all 459 possibilities? (y or n) ,之前我以为是建表语句有问题,一直在改语句,后来在网上搜这个错误,原来语句里混杂了Tab缩进,这可能是我使用notepad++的时候打出来的: 解决方案:把它粘到plsql里,将空格和缩进都重新打一遍就好了,在plsql里可以用tab键: 原文地址:https://www.cnblogs.com/xiao02fang/p/10006748.html

当 IDENTITY_INSERT 设置为 OFF 时,不能向表 中的标识列插入显式值错误的解决方法

一个主键.两个外键,把两个外键改为非空就行了. CREATE TABLE [dbo].[User_Compare]( [Id] [int] IDENTITY(1,1) NOT NULL, [UserId] [int] NOT NULL, [PatentId] [int] NOT NULL, CONSTRAINT [PK_User_Compare] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOM