当前位置:  开发笔记 > 编程语言 > 正文

查询mysql数据库时允许哪些字符?

如何解决《查询mysql数据库时允许哪些字符?》经验,为你挑选了1个好方法。

我有一个表单中的textarea,当我在其中输入特殊字符时,我在mysql中出错.(当将表单提交到php文件时,该文件执行插入mysql的工作)

我需要确切地知道哪些字符是不允许的,或者更容易,正是允许的字符是什么,以便我可以在提交之前验证textarea.

有人知道吗?

我试过mysql_real_escape_string()但没有帮助...

注意:在textarea中,用户应该输入一些这样的特殊字符:

 + , . ; : - _ space & % ! ? = # * ½ @ / \ [ ] ' " < > £ $ €

可能得到了所有......

我怎样才能做到这一点?

谢谢

UDPATE

我的mysql_query:

mysql_query("INSERT INTO cars_db (description) VALUES ('$ad_text')");

UPDATE

Mysql错误:

    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 'a"a!a?aa+a-a_a
a/a\a[a]a}a{a&a%a#a@a¨a^a*a*aa,a.a:a;a|a½a
§a' at line 1

Paul Dixon.. 5

从技术上讲,数据库列可以包含任何这些字符.问题是您没有在查询中正确转义它们.

使用mysql_real_escape_string执行此操作的一种方法如下:

$sql=sprintf("insert into cars_db (description) values ('%s')",
    mysql_real_escape_string($_POST['description']) );

//execute query and show errors that result...
$result = mysql_query($sql);
if (!$result) {
    die("Oops:
$sql
".mysql_error()); }

另一种方法是使用像PDO或ADODb这样的库,这样可以更容易地使用带占位符的预准备语句.此类库可确保正确转义注入查询的数据.

这是一种很好的做法,不仅因为它解决了您的问题,而且还提高了代码的安全性,因为执行SQL注入攻击变得更加困难.



1> Paul Dixon..:

从技术上讲,数据库列可以包含任何这些字符.问题是您没有在查询中正确转义它们.

使用mysql_real_escape_string执行此操作的一种方法如下:

$sql=sprintf("insert into cars_db (description) values ('%s')",
    mysql_real_escape_string($_POST['description']) );

//execute query and show errors that result...
$result = mysql_query($sql);
if (!$result) {
    die("Oops:
$sql
".mysql_error()); }

另一种方法是使用像PDO或ADODb这样的库,这样可以更容易地使用带占位符的预准备语句.此类库可确保正确转义注入查询的数据.

这是一种很好的做法,不仅因为它解决了您的问题,而且还提高了代码的安全性,因为执行SQL注入攻击变得更加困难.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有