Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 撇号生成SQL错误_Mysql_Sql - Fatal编程技术网

Mysql 撇号生成SQL错误

Mysql 撇号生成SQL错误,mysql,sql,Mysql,Sql,我创建了一个表单来收集用户数据,包括地址,并将其写入Mysql数据库。 在用户表中,Street是一个Varchar(255)。 一切都很好,除非名字里有撇号,在这种情况下我有 以下SQL警告: 例如,如果我在街道的名称中写上“Francesco D'assisi 24” 错误:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在“assisi 24”附近使用的正确语法。 知道如何避免吗?通过存储过程参数传递变量。需要转义数据:使用函数mysql\u real\u escape\

我创建了一个表单来收集用户数据,包括地址,并将其写入Mysql数据库。 在用户表中,
Street
是一个
Varchar(255)
。 一切都很好,除非名字里有撇号,在这种情况下我有 以下SQL警告:

例如,如果我在
街道的
名称中写上“Francesco D'assisi 24”

错误:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在“assisi 24”附近使用的正确语法。


知道如何避免吗?

通过存储过程参数传递变量。

需要转义数据:使用函数mysql\u real\u escape\u string(或其他库中的类似函数),或使用PDO和参数

例如:

$data = <<<TXT
Francesco D'assisi 24
TXT;

$data = mysql_real_escape_string($data);
mysql_query("INSET INTO table VALUES ('$data')") or die mysql_error();

$data=它被称为sql注入,使用准备好的语句。