PHP擷取值以後怎麼格式化
資料庫裡面有一個表,兩個欄位
id int (5)
content text
然後 form 的表單是這樣的
$content=$_POST['content'];
$sql="insert into dbname (`id`,``) values(null,'$content')":
現在的問題是如果我在這個表單裡面如果寫很多類似符號,比如單引號,雙引號,或者!@#$$%這樣的東西就會提交失敗,我吧sql列印出來插入也會失敗,應該是起來衝突了,因為我在插入的值的時候用了單引號, 如果提交的值也有單引號,應該就是不知道
------解決思路----------------------
插入前先轉義
只需要轉一次
$content = mysql_escape_string($_POST['content']);
$sql = "insert into dbname (`id`,`content`) values(null,'$content')":
參考:http://php.net/manual/zh/function.mysql-escape-string.php
------解決思路----------------------
樓上已經解答完了
這裡普及一下:
mysql_real_escape_string 主要是為了 資料庫防注入、以及語句正確性等需要,將讀寫語句中的字元進行了轉換;
但最終寫入到資料庫中的內容,依舊是你轉義前的;所以當你讀出來的時候,依舊是原來轉義前的內容;
比如,你要在資料庫中插入字串 aaaa"aaaa 但如果寫成insert into table values("aaaa"aaaa"); 語句就出錯了,使用mysql_real_escape_string就能轉義成 aaaa\"aaaa; 最終語句就變成了 insert into table values("aaaa\"aaaa");
但你select * from table 最終得到的內容依舊是 aaaa"aaaa