2015-06-07 47 views
0

我已经在MySQL以下qquery错误,当插入到VARCHAR列

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':

这是导致错误。所以有人可以告诉我为什么?

+0

add_id是一个自动递增值。我的问题是为varchar字段,如果我给像'lk'的价值:这是一个错误。 – lahiruk93

回答

0

当您构建您的查询时,您需要转义您插入的数据。 你需要至少使用和addslashes()函数在PHP中,像这样的:

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

但是更正确的方法是使用不同的功能比和addslashes,这妥善处理所有字符的数据,不仅撇号。

我使用我的自定义“逃离”的功能是这样的:

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