2013-04-04 74 views
0

PHP版本:5.3.19 MYSQL版本:5.0.96如何更新HTML代碼到MySQL場

我有一個數據庫表包含XML數據的字段:

XML數據:

<?xml version="1.0"?> 
    <book> 
     <page> 
      <data>Page 1</data> 
     </page> 
     <page> 
      <data>Page 2</data> 
     </page> 
     <page> 
      <data>Page 3</data> 
     </page> 
    </book> 

我已經成功了xml數據顯示,現在我想用PHP來更新它

PHP代碼:

$id = 1; 
    $fav_id = $id; 
    $userid = 1; 
    $data_update = '<p style="text-align: center;"><span style="text-decoration: underline; font-size: xx-large;"><em><strong>Title</strong></em></span></p>'; 
    $page_number = 0; 

    mysql_select_db($database_main, $main); 
    $query_Recordset1 = "SELECT * FROM projects WHERE id = $id"; 
    $Recordset1 = mysql_query($query_Recordset1, $main) or die(mysql_error()); 
    $row_Recordset1 = mysql_fetch_assoc($Recordset1); 
    $totalRows_Recordset1 = mysql_num_rows($Recordset1); 

    $xmldata = (string)$row_Recordset1['projectData']; 
    $parsed = simplexml_load_string($xmldata); 
    $data = $parsed->xpath('//data'); 
     $data[$page_number] = $data_update; 

    $x = 0; 
    $array_length = count($data); 
    while($x < $array_length){ 
      if($x==0){ 
       $finalData .= '<?xml version="1.0"?><book>'; 
      } 
      $finalData .= "<page><data>$data[$x]</data></page>"; 
      if($x==$array_length-1){ 
       $finalData .= "</book>";  
      } 
      $x++; 

    } 
    $FinalData = mysql_real_escape_string($finalData); 
     $updateSQL = "UPDATE projects SET projectData=$finalData WHERE id=$fav_id"; 
     mysql_select_db($database_main, $main); 
    $Result1 = mysql_query($updateSQL, $main) or die(mysql_error()); 

我想最終的結果是:

<?xml version="1.0"?> 
    <book> 
     <page> 
      <data> 
       <p style="text-align: center;"> 
        <span style="text-decoration: underline; font-size: xx-large;"> 
         <em><strong>Title</strong></em> 
        </span> 
       </p> 
      </data> 
     </page> 
     <page> 
      <data>Page 2</data> 
     </page> 
     <page> 
      <data>Page 3</data> 
     </page> 
    </book> 

雖然當我嘗試addslashes()mysql_real_escape_string()我得到:

DATA:

<p center;\\\"="" style="\\\"text-align:"> 
    <span xx-large;\\\"="" font-size:="" underline;="" style="\\\"text-decoration:"> 
     <em> 
      <strong>Title</strong> 
     </em> 
    </span> 
</p> 

我的問題是,爲什麼那些兩個函數[addslashes()mysql_real_escape_string()]給了我上面的結果,以及如何防止它發生NG?

回答

0

功能mysql_real_escape_string()addslashes()幾乎與mysql_real_escape_string()完全相同,增加了一點點額外。

php.netmysql_real_escape_string()

mysql_real_escape_string()調用MySQL的庫函數mysql_real_escape_string,其中前添加反斜槓以下字符:\ X00,\ n,\ r,\,」,「和\ X1A

php.netadd_slashes()

返回與backslashe字符串這些字符是單引號('),雙引號(「),反斜線(\)和NUL(NULL字節)。

要停止發生這種情況,您可以做的事情不多,只需在輸出字段時使用stripslashes()即可。

0

mysql_real_escape_string VS addslashes 我希望這給你的答案addslashes()和mysql_real_escape_string()..我不能發表評論..我知道這不是你的問題的完整答案。這可以清除您對使用情況的疑惑。 addslashes是每個需要「\」的字符的GENERIC函數,而mysql_real_escape_string是MySQL特定的!