iT邦幫忙

0

關於mysql的「'」與「"」該怎麼處理呢?

小弟寫了一個發怖公告的小系統,發現只要帶到「'」就會error,後來發現問題卡在這裡,試過換「"」,還是出現問題,因為公告內容如果是英文如「My name's "eric"」就不知道該如何轉換了,請問這個應該怎麼處理呢?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
wiseguy
iT邦超人 1 級 ‧ 2015-01-21 20:03:50
最佳解答

會遇到這種問題,顯然你是把 user 貼上來的資料,直接串在 SQL 字串上就往資料庫送吧?所以解法是:

  1. 先把資料用 mysql_real_escape_string 處理過再串接。這個函數就會幫你做如一樓小雨大示範給你看的引號跳脫了。
  2. 使用 prepared 語法 http://php.net/manual/en/class.mysqli-stmt.php
18
一級屠豬士
iT邦大師 1 級 ‧ 2015-01-21 10:41:24
<pre class="c" name="code">CREATE TABLE ithelp150121(
id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
eng CHAR(30) NOT NULL
);

INSERT INTO ithelp150121(eng) VALUES
('My name\'s \"eric\"');

SELECT *
  FROM ithelp150121;

+----+------------------+
| id | eng              |
+----+------------------+
|  1 | My name's "eric" |
+----+------------------+

用 \ 來帶,這叫逸出序列.

正確解答,給一個讚!讚

player iT邦大師 1 級 ‧ 2015-02-06 20:41:47 檢舉

關於 '
MySQL 是 \'
SQL Server 是 ''

關於 "
MySQL 是 \" (沒留意過)
SQL Server 是不用改,一樣用 "

0
Yish
iT邦新手 4 級 ‧ 2015-01-22 10:51:31

hello
雖然說可以透過\或者或者php的一些功能進行過濾字元的動作
但我還是建議使用pdo的方式進行sql query

你可以開啟pdo的extenstion就可以使用了
或者有第三方的framework可進行套用

這邊我建議你使用medoo
http://medoo.in/
他是一個精簡的fw 以不影響你目前既有的結構下進行套入會讓你的網站更加安全
這邊是我前鎮子的使用心得
https://medium.com/@yish/medoo-16c56f4d3587

enjoy it.

0
allwhitecat
iT邦新手 5 級 ‧ 2015-01-24 00:14:40

iT邦應該是用htmlspecialchars()來處理的吧
看了下原始碼
「'」已經轉換成HTML實體符號'

我要發表回答

立即登入回答