鍍金池/ 問答/PHP  數據庫/ sql語句中出現(xiàn)單引號導致報錯

sql語句中出現(xiàn)單引號導致報錯

sql語句

$sql_insert = "insert into tabs(name,singer,address) values ('$name','$singer','$songaddress')";
$res_insert = $conn->query($sql_insert);

問題

我的$name、$singer、$songaddress 變量中會出現(xiàn)單引號,導致引號之間相互沖突,這時sql的語句無法執(zhí)行,請教大神如何解決?

回答
編輯回答
嘟尛嘴

addslashes函數了解一下

2018年2月28日 23:52
編輯回答
赱丅呿

sql中,用兩個個單引號,表示一個不是字符邊界的單引號:

select 'fff''fff' ff
2018年3月19日 00:53
編輯回答
寫榮

不要拼接SQL了。容易導致SQL注入。
使用PDO對象來操作數據庫,使用預處理語句來處理你的SQL防止SQL注入:

/* 通過綁定的 PHP 變量執(zhí)行一條預處理語句  */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();

http://php.net/manual/zh/clas...

2018年5月16日 01:36
編輯回答
法克魷

將你變量$name、$singer、$songaddress 中的字符串中的單引號

  1. 或加上轉義字符,變成\'。
  2. 或者在變量中使用兩個單引號替換原來的一個,變成''
  3. 或者對變量直接使用 addslashes函數完成特殊字符轉義。
2017年11月13日 23:21
編輯回答
真難過

用轉義符+雙引號,如:
$sql_insert = "insert into tabs(name,singer,address) values (\"$name\",\"$singer\",\"$songaddress\")";

2018年2月5日 09:13