2012-12-08 23 views
0

我有一個帶有標題的「div」標籤和一個帶標題的「p」標籤,我想將這些元素與其內容一起存儲,包括數據庫中屬於用戶的標籤。如何使用php和mysql將html元素(包括標籤)存儲在數據庫中?

什麼是最好的方式來存儲「div」的內容和「p」的標題使用PHP和MySQL?

這與如何用用戶標題存儲用戶評論非常相似。

例子:

HTML

<p name="myTitle">This is my title</p> 

<div name="myContent"> 
    This is a paragraph This is a paragraph 
    This is a paragraph This is a paragraph 
</div> 

請幫助。

+1

...你有沒有嘗試過使用'INSERT'語句將數據插入表中的列?如果不是,那麼你嘗試過什麼,哪些沒有奏效? – Charles

+1

我確信要存儲的更重要的數據是關於這些標籤的信息。例如,如果這是博客的一部分,則不直接存儲代碼,而是將標題作爲一列,將內容作爲另一列,作者ID等。 – Raekye

+0

我的問題在於,如何在PHP中存儲標記然後發送到數據庫。 – jQueryster

回答

4

第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(); 
} 

現在你知道如何在你的數據庫中插入值。你會注意到這裏沒有任何東西被明確地逃脫。原因有二:

  1. 通過creating a prepared statementbinding parameters at execute time,我們自動防止HTML裏面的髒東西從創建SQL injection attack
  2. 您正在存儲HTML。沒有理由編碼或以其他方式破壞您在此存儲的HTML。它是HTML。它的目的是顯示爲HTML,所以爲什麼要銷燬它?但是,這並不意味着它是安全的 HTML。如果是用戶輸入的HTML,則可能是惡意的。您應該使用HTML過濾器,例如HTML Purifier以允許只有您明確要在那裏的內容。

希望這個蜿蜒而且過於廣泛的答案將接近爲您的模糊和不明確的問題提供解決方案。如果您可以提供更多關於您準備完成的細節(請參閱:The XY Problem),那麼我可能會爲您提供更多有用的詳細信息。

+1

對於PDO語句是+1 – Yamaha32088

相關問題