鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ sql語(yǔ)句中出現(xiàn)單引號(hào)導(dǎo)致報(bào)錯(cuò)

sql語(yǔ)句中出現(xiàn)單引號(hào)導(dǎo)致報(bào)錯(cuò)

sql語(yǔ)句

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

問(wèn)題

我的$name、$singer、$songaddress 變量中會(huì)出現(xiàn)單引號(hào),導(dǎo)致引號(hào)之間相互沖突,這時(shí)sql的語(yǔ)句無(wú)法執(zhí)行,請(qǐng)教大神如何解決?

回答
編輯回答
嘟尛嘴

addslashes函數(shù)了解一下

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

sql中,用兩個(gè)個(gè)單引號(hào),表示一個(gè)不是字符邊界的單引號(hào):

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

不要拼接SQL了。容易導(dǎo)致SQL注入。
使用PDO對(duì)象來(lái)操作數(shù)據(jù)庫(kù),使用預(yù)處理語(yǔ)句來(lái)處理你的SQL防止SQL注入:

/* 通過(guò)綁定的 PHP 變量執(zhí)行一條預(yù)處理語(yǔ)句  */
$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 中的字符串中的單引號(hào)

  1. 或加上轉(zhuǎn)義字符,變成\'。
  2. 或者在變量中使用兩個(gè)單引號(hào)替換原來(lái)的一個(gè),變成''
  3. 或者對(duì)變量直接使用 addslashes函數(shù)完成特殊字符轉(zhuǎn)義。
2017年11月13日 23:21
編輯回答
真難過(guò)

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

2018年2月5日 09:13