简体   繁体   English

插入varchar列时出错

[英]error when insert to varchar column

i have following qquery in 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 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
) 

then i try to insert row via following code 然后我尝试通过以下代码插入行

$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());

now if i give a value to my description field like this= 'lk' : 现在,如果我给我的说明字段一个值,例如this ='lk':

this is cause to a error.so some one can tell me why is that? 这是导致错误的原因。所以有人可以告诉我为什么吗?

When you construct your query, you need to escape the data you are inserting. 构造查询时,您需要转义要插入的数据。 You need to at least use addslashes() function in PHP, like this: 您至少需要在PHP中使用addlashes()函数,如下所示:

$insert = mysql_query("insert into adds(title,email) values('".addslashes($title)."','".addslashes($email)."')")

However more correct way is to use a different function than addslashes, which properly handles all characters in the data, not only apostrophes. 但是,更正确的方法是使用与加号不同的功能,而加号可以正确处理数据中的所有字符,而不仅仅是撇号。

I am using my custom 'escape' function like this: 我正在使用这样的自定义“转义”功能:

function escape($text)
{
   return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $text);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM