Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 插入到varchar列时出错_Mysql - Fatal编程技术网

Mysql 插入到varchar列时出错

Mysql 插入到varchar列时出错,mysql,Mysql,我在MySQL中有以下qquery CREATE TABLE IF NOT EXISTS `adds` ( `add_id` int(11) NOT NULL, `title` varchar(500) NOT NULL, `email` varchar(100) NOT NULL, `name` varchar(100) NOT NULL, `category` varchar(100) NOT NULL, `subcategory` varchar(100) NOT

我在MySQL中有以下qquery

CREATE TABLE IF NOT EXISTS `adds` ( 
  `add_id` int(11) NOT NULL,
  `title` varchar(500) NOT NULL,
  `email` varchar(100) NOT NULL,
  `name` varchar(100) NOT NULL,
  `category` varchar(100) NOT NULL,
  `subcategory` varchar(100) NOT NULL,
  `district` varchar(100) NOT NULL,
  `city` varchar(100) NOT NULL,
  `discription` varchar(5000) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
  `price` varchar(100) NOT NULL,
  `address` varchar(500) NOT NULL,
  `mobile` int(11) NOT NULL,
  `date` date NOT NULL
) 
然后我尝试通过以下代码插入行

$insert = mysql_query("insert into adds(title,email,name,category,subcategory,district,city,discription,price,address,mobile,date) values('$title','$email','$name','$cat','$subcat','$district','$city','$description','$price','$address','$mobile','$date')") or die(mysql_error());
现在,如果我给我的描述字段一个值,比如='lk':


这是导致错误的原因。因此,有人可以告诉我原因是什么?

构造查询时,需要转义插入的数据。 您至少需要在PHP中使用addslashes()函数,如下所示:

$insert = mysql_query("insert into adds(title,email) values('".addslashes($title)."','".addslashes($email)."')")
function escape($text)
{
   return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $text);
}
然而,更正确的方法是使用不同于addslashes的函数,addslashes可以正确处理数据中的所有字符,而不仅仅是撇号

我使用的自定义“转义”功能如下:

$insert = mysql_query("insert into adds(title,email) values('".addslashes($title)."','".addslashes($email)."')")
function escape($text)
{
   return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $text);
}

add_id是一个自动递增的值。我的问题是,如果我给出像“lk”这样的值,那么varchar字段的问题是:这是由于一个错误。