PHP擷取值以後如何格式化

來源:互聯網
上載者:User
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
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.