![](/img/trans.png)
[英]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.