Php MySQL不让';及;长期

Php MySQL不让';及;长期,php,mysql,database,Php,Mysql,Database,MySQL不允许我在我为我的网站制作的上下文表单中使用“和”。发送到数据库的所有其他字段都很好,但如果使用字母和数字以外的任何内容,则长文本字段也会出错 我有它在长文本,不是空的 我试图将mysql_real_escape_string()放入我的代码中在您的编程语言中查找可以逃逸斜杠和类似字符的函数,并在发送到数据库之前将其应用于您的输出使用参数化查询,这样您就不必担心逃逸特殊字符,而且更安全(即防止SQL注入攻击).这应按建议进行 $sql2="INSERT INTO $tbl_name(s

MySQL不允许我在我为我的网站制作的上下文表单中使用“和”。发送到数据库的所有其他字段都很好,但如果使用字母和数字以外的任何内容,则长文本字段也会出错

我有它在长文本,不是空的


我试图将mysql_real_escape_string()放入我的代码中

在您的编程语言中查找可以逃逸斜杠和类似字符的函数,并在发送到数据库之前将其应用于您的输出

使用参数化查询,这样您就不必担心逃逸特殊字符,而且更安全(即防止SQL注入攻击).

这应按建议进行

$sql2="INSERT INTO $tbl_name(s_id, s_name, s_email, s_content) VALUES(".$id.", '".mysql_real_escape_string($s_name)."', '".mysql_real_escape_string($s_email)."', '".mysql_real_escape_string($s_content)."')"; 

你应该:利用准备好的语句,如果你不这样做,总是转义!!!来自客户端输入的值。如果不是这样,你的网站很容易被脚本kiddis入侵,脚本kiddis只是测试一些sql注入。

使用准备好的语句比使用你所采用的方法更好,使用准备好的语句的优点是和PDO一样,PDO可以使您免受MYSQL注入之类的攻击,还有很多其他攻击,基本上PDO是一个内置的PHP类,可以让您轻松地与数据库交互,而且它非常灵活,例如

要使用PDO建立连接,只需使用一行代码,就像初始化对象一样

$dbh = new PDO('mysql:host='.HOST.';dbname='.DATABASE,USERNAME,PASSWORD);
就是这样,请注意我用的是常量,你可以用你自己的替换

例如,如果您想使用PDO选择某个对象,只需编写一行代码

$sth = $dbh->query('SELECT id,name FROM table');
//Query is executed in the above code, and when you want to retrieve the value you just need another line of code.
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
就是这样,现在您有了一个数组$result,它保存了所有检索到的值。它不是很简单且易于使用吗

要开始使用PDO,请在中查看本教程
他们解释得很好。

如果你用反斜杠将其转义怎么办?表单是为用户准备的,我不希望他们每次都必须键入反斜杠:(-我应该使用varchar吗?我对此也有点困惑,但我明白,我的意思是作为一个测试。你不应该对varchar有任何问题。我一直都在使用它。在发布你的问题时,似乎出现了错误,我们看不到你的代码。好的,语言是php…你知道我可以立即使用什么吗?我发现了这个…我该如何把它放进去使用我的查询?string htmlspecialchars(string$string[,int$flags=ENT\u COMPAT[,string$charset[,bool$double\u encode=true]])试试这个,它可以在字符串层工作mysql\u real\u escape\u string()如果使用正确,也可以工作。向我们展示你的PHP代码(你可以编辑你的问题来添加它),我们会发现问题所在。$sql2=“INSERT INTO$tbl\u name(s_id,s_name,s_email,s_content)值(“$id”,“s_name”,“s_email”,“s_content”);“mysql_real_escape_string()$result2=mysql_query($sql2);if($result2){echo”Successful
“我对mysql是新手,所以我不确定你的意思..他是我的查询部分:$sql2=$INSERT INTO$tbl_name(s_id,s_name,s_name,s_name,s_email,s_content)值(“$id'、$s_name'、$s_email'、$s_content');$result2=mysql_query($sql2);如果($result2){echo“Successful
”,你必须使用而不是“flat API”,那么你就可以使用了。我对你的意思有点困惑了?@fealiuex“PDO”这个词“在我之前的评论中是链接-点击它将带你进入PHP手册,这样你就可以阅读有关的内容了。那个+运算符是什么?PHP使用点(.)在最后一次SCORRIY切换到句号时,不连接到多个C++,没有幸运的是,我现在不在家,没有PHP解释器,你得到什么错误消息?谢谢你的帮助,但是这会允许“和”“?是的,它当然可以工作,但如果您想存储特殊符号,如单引号或双引号,则应使用
addslashes()对其进行转义
例如,假设您想存储一个字符串
$string='我是google+,Facebook的新竞争对手'
,然后在将其直接插入数据库之前,您需要使用上述函数,以便对这样的特殊符号进行转义。在这里,看看这篇文章,这可能会让您清楚地了解字符串是如何操作的在PHP中工作