簡體   English   中英

插入varchar列時出錯

[英]error when insert to varchar column

我在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());

現在,如果我給我的說明字段一個值,例如this ='lk':

這是導致錯誤的原因。所以有人可以告訴我為什么嗎?

構造查詢時,您需要轉義要插入的數據。 您至少需要在PHP中使用addlashes()函數,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM