使用PHP查询在MySQL中插入HTML文件


Inserting a HTML file in a MySQL using PHP query

我有一个像这样的heredoc变量:

$status=<<<EOT
<p>hello world</p>
<p>I'm <strong>really</strong>OK!</p>
<p></p>
EOT;

我想通过PHP将它插入到我的MySQL数据库中,其中包含空格,如下所示:

query="INSERT INTO requests (ID,title) VALUES ('$ID','$status')";

但我不能那样做。我该怎么做才能被允许插入?

您可以通过两种方式实现:

像这样使用mysqli_real_escape_string()

$mydb = new mysqli("localhost","root","FedAnd11");
$status=<<<EOT
<p>hello world</p>
<p>I'm <strong>really</strong>OK!</p>
<p></p>
EOT;
$query="INSERT INTO requests (ID,title) VALUES ('$ID','".$mydb->real_escape_string($status)."')";

或者如果你还没有数据库连接,

$status=<<<EOT
<p>hello world</p>
<p>I'm <strong>really</strong>OK!</p>
<p></p>
EOT;
$status = str_replace(array('''', "'0", "'n", "'r", "'", '"', "'x1a"), array('''''', '''0', '''n', '''r', "'''", '''"', '''Z'), $status);
$query="INSERT INTO requests (ID,title) VALUES ('$ID','$status')";

如果我理解你的问题。

你可以做的另一件事是使用mysql准备的语句,如果你真的想按原样放置$status,就像这样:

$status=<<<EOT
<p>hello world</p>
<p>I'm <strong>really</strong>OK!</p>
<p></p>
EOT;
$stmt = $dbConnection->prepare('INSERT INTO requests (ID,title) VALUES (?,?)');
$stmt->bind_param('is', $ID,$status);
$stmt->execute();

我认为$ID是整数。

尝试使用addslashes()

$status = addslashes($status);
query="INSERT INTO requests (ID,title) VALUES ('$ID','$status')";