如何使用PHP将HTML代码插入数据库

时间:2014-07-08 11:50:06

标签: php html mysql

我想用新的HTML代码更新我的数据库 这就是查询:

UPDATE `Pages` SET `content`= '<div id="intro">
<div id="about" align="left">
<h2 class="bigHeader" dir="rtl"HEADER</h2>
<img src="img/Med-logo.png" alt="" />
<div id="wellcomePage" class="text-left text" dir="rtl">
<p>...some words....</p>
<p>.some words....</p>
<p>&nbsp;</p>
</div>
</div>
</div>' 

但是我一直都会收到错误。 我怎么能更新我的数据库,我不知道这个html代码里面会有什么内容,是否有一个函数可以使所有代码像字符串一样没有特殊符号?

EDIT :: 问题在于特殊字符如&#39;我无法改变html代码,用户是否可以使用它。

7 个答案:

答案 0 :(得分:6)

使用addslashes()函数执行以下操作,因此可以轻松地将更新html插入

UPDATE `Pages` SET `content`= addslashes('<div id="intro">
<div id="about" align="left">
<h2 class="bigHeader" dir="rtl"HEADER</h2>
<img src="img/Med-logo.png" alt="" />
<div id="wellcomePage" class="text-left text" dir="rtl">
<p>...some words....</p>
<p>.some words....</p>
<p>&nbsp;</p>
</div>
</div>
</div>') 

答案 1 :(得分:4)

试试这个: - $ htmlcode = mysql_real_escape_string($ htmlcode);

例如: -

$htmlcode = '<div id="intro">
<div id="about" align="left">
<h2 class="bigHeader" dir="rtl"HEADER</h2>
<img src="img/Med-logo.png" alt="" />
<div id="wellcomePage" class="text-left text" dir="rtl">
<p>...some words....</p>
<p>.some words....</p>
<p>&nbsp;</p>
</div>
</div>
</div>';

$htmlcode = mysql_real_escape_string($htmlcode);

UPDATE `Pages` SET `content`= '$htmlcode';

答案 2 :(得分:1)

将html内容存储在一个变量中,并在将其插入数据库时​​使用addslashes()。

$content='<div id="intro">
<div id="about" align="left">
<h2 class="bigHeader" dir="rtl"HEADER</h2>
<img src="img/Med-logo.png" alt="" />
<div id="wellcomePage" class="text-left text" dir="rtl">
<p>...some words....</p>
<p>.some words....</p>
<p>&nbsp;</p>
</div>
</div>
</div>';

并将您的查询编写如下

UPDATE `Pages` SET `content`=addslashes($content);

希望这会对你有所帮助:)。

答案 3 :(得分:0)

我认为这会解决问题

Encode your text

当您从数据库中获取文本时,只需将其解码回来

答案 4 :(得分:0)

这可能是this post

的重复

无论如何......这可能是你的解决方案

$html = mysql_real_escape_string($html);
$sql = "UPDATE `Pages` SET `content`= $html";

答案 5 :(得分:0)

我认为你的字符串中应该有一个(')单引号。

你可以使用'htmlspecialchars'函数和ENT_QUOTES作为第二个参数。

还可以使用'mysql_real_escape_string'功能。

喜欢

$hcode = '<div id="intro">
<div id="about" align="left">
<h2 class="bigHeader" dir="rtl"HEADER</h2>
<img src="img/Med-logo.png" alt="" />
<div id="wellcomePage" class="text-left text" dir="rtl">
<p>...some words....</p>
<p>.some words....</p>
<p>&nbsp;</p>
</div>
</div>
</div>';
$hcode = htmlspecialchars($hcode, ENT_QUOTES);
UPDATE `Pages` SET `content`= '$hcode';

答案 6 :(得分:0)

如果您可以在之前使用 PDO 准备语句然后插入数据,那就太好了。 你要插入的变量可以是任何东西,你不需要关心它们是否有 ' 或 " 或 ' " > 一切都很好,通过使用 prepare() 我们是说我们将插入以下变量而不做任何更改。因此,即使您有代码或 sql 注入,无论如何它都会被视为文本。 您可以像这样进行 PDO 连接:

$host = 'hostname';
$user = 'duh_user';
$password = 'duh_pwd';
$dbname = 'myDatabase';

$dsn = 'mysql:host='.$host.';dbname='.$dbname.';charset=utf8mb4';
$pdo = new PDO($dsn, $user, $password);

$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);


$column1 = $htmlcode;
$column2 = $anything;
$column3 = $reallyAnything;

$query = "INSERT INTO table_name(column1, column2, column3) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($query);
$stmt->execute([$column1, $column2, $column3]);