[英]how to edit paragraphs in html page and store it in mysql database?
[英]Store HTML into MySQL database
我正在嘗試使用Longtext
數據類型在MySQL數據庫中存儲包含HTML的String
。 但是它總是說“您的SQL語法有錯誤”。 我試圖存儲一個普通的String
,它的工作原理。
更新 :
這是查詢:
st.executeUpdate("insert into website(URL,phishing,source_code,active) values('" + URL + "','" + phishingState + "','" + sourceCode + "','" + webSiteState + "');");
我正在使用Java。
SQL查詢中的字符串通常用單引號引起來。 例如
INSERT INTO tbl (html) VALUES ('html');
但是,如果HTML字符串本身也包含一個單引號,它將破壞SQL查詢:
INSERT INTO tbl (html) VALUES ('<form onsubmit="validate('foo', 'bar')">');
您已經在語法突出顯示器中看到了它,SQL值恰好在foo
之前結束,並且SQL解釋器無法理解其后的內容。 SQL語法錯誤!
但是,這不是唯一的,但也可能使大開大闔的SQL注入 ( 例子在這里 )。
在構造SQL查詢期間,您確實需要清理SQL。 如何執行取決於您用來執行SQL的編程語言。 如果是PHP,則需要mysql_real_escape_string()
:
$sql = "INSERT INTO tbl (html) VALUES ('" . mysql_real_escape_string($html) . "')";
PHP中的一種替代方法是使用預處理語句 ,它將為您處理SQL轉義。
如果您使用的是Java( JDBC ),則需要PreparedStatement
:
String sql = "INSERT INTO tbl (html) VALUES (?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, html);
更新 :事實證明您實際上是在使用Java。 您需要按以下方式更改代碼:
String sql = "INSERT INTO website (URL, phishing, source_code, active) VALUES (?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, URL);
preparedStatement.setString(2, phishingState);
preparedStatement.setString(3, sourceCode);
preparedStatement.setString(4, webSiteState);
preparedStatement.executeUpdate();
不要忘記正確處理JDBC資源。 您可能會發現本文很有用,可以幫助您深入了解如何以正確的方式進行基本的JDBC操作。 希望這可以幫助。
嘗試在要存儲的字符串上使用mysql_real_escape_string
函數。 這是最簡單的方法。
您需要先對字符串進行轉義,然后再將其插入數據庫。
不見查詢就很難說。 你可以張貼嗎?
我假設html字符串的某些部分需要轉義,也許您錯過了?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.