第1步,連接到數據庫,並告訴它我們正在使用什麼字符集。
try {
$db = new PDO('mysql:host=HOSTNAME', 'USERNAME', 'PASSWORD', array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
第2步,插入你的表。
$sql = 'INSERT INTO table_name(p_column, div_column) VALUES(:p, :div)';
try {
$sh = $db->prepare($sql);
$sh->execute(array(
':p' => $VARIABLE_CONTAINING_P,
':div' => $VARIABLE_CONTAINING_DIV,
));
} catch (PDOException $e) {
echo 'Insert failed: ' . $e->getMessage();
}
現在你知道如何在你的數據庫中插入值。你會注意到這裏沒有任何東西被明確地逃脫。原因有二:
- 通過creating a prepared statement和binding parameters at execute time,我們自動防止HTML裏面的髒東西從創建SQL injection attack。
- 您正在存儲HTML。沒有理由編碼或以其他方式破壞您在此存儲的HTML。它是HTML。它的目的是顯示爲HTML,所以爲什麼要銷燬它?但是,這並不意味着它是安全的 HTML。如果是用戶輸入的HTML,則可能是惡意的。您應該使用HTML過濾器,例如HTML Purifier以允許只有您明確要在那裏的內容。
希望這個蜿蜒而且過於廣泛的答案將接近爲您的模糊和不明確的問題提供解決方案。如果您可以提供更多關於您準備完成的細節(請參閱:The XY Problem),那麼我可能會爲您提供更多有用的詳細信息。
...你有沒有嘗試過使用'INSERT'語句將數據插入表中的列?如果不是,那麼你嘗試過什麼,哪些沒有奏效? – Charles
我確信要存儲的更重要的數據是關於這些標籤的信息。例如,如果這是博客的一部分,則不直接存儲代碼,而是將標題作爲一列,將內容作爲另一列,作者ID等。 – Raekye
我的問題在於,如何在PHP中存儲標記然後發送到數據庫。 – jQueryster