PHP保存html代码在phpmyadmin


php save html-code in phpmyadmin

在phpmyadmin中保存html代码有一个小问题。

这是html代码($html_txt),我想保存在sql表。我从另一个sql查询中获得代码。

An günstigen Tagen "Paradies" ist es dienlich.
Test/Test<br /><br />"Test"

这就是我的查询。

$id = 1;
$html = "'".$html_txt"'";
$sql = 'UPDATE table SET text = '.$html_txt.' WHERE id = '.$id.'';

这行不通。任何想法?我也试过这样做:

$id = 1;
$html_txt;
$sql = 'UPDATE table SET text = '.$html_txt.' WHERE id = '.$id.'';

查询前必须转义字符串语句。您的查询应该如下所示:

$con = mysqli_connect("localhost","user","password","db");
$id = mysqli_real_escape_string($con, $id);
$html_txt = mysqli_real_escape_string($con, $html_txt); 
$sql = 'UPDATE table SET text = ' . $html_txt . ' WHERE id = ' . $id . '';

如果我不说我会死:

  1. 请使用参数化查询
  2. 请避免使用易受攻击的sql语句。

使用mysql_escape_string来支持html entities,并且可能文本是关键字,所以使用如下文本

$id = 1;
$html =mysql_real_escape_string($html_txt);
$sql = 'UPDATE table SET `text` = '.$html.' WHERE id = '.$id.'';

这应该是一个注释-但它有点冗长。

对于大多数PHP开发人员来说,问题是缺乏HTML字符串的转义,这应该是显而易见的,但这本身并不是一个糟糕的问题的原因。

你没有提供任何自己调查问题的细节。"行不通"并不能很好地描述所发生的事情——在这种情况下,预期的结果对我来说是相当明显的,但情况并非总是如此。我也知道实际的结果会是什么——但你也没有记录下来。在大多数情况下,代码的行为不像预期的那样,错误消息将在某处报告-您应该查找它。DBMS会返回一个特定的错误消息——你的代码应该轮询这个消息——特别是当你遇到问题的时候。

如果你看过你发送的SQL(或包含在你的帖子中),这也会有助于诊断。

您应该正确转义您的HTML值。虽然这个解决方案不是最优的,因为它没有使用参数化查询(PDO, ....),但可以试试这个:

$html = 'An g&uuml;nstigen Tagen "Paradies" ist es dienlich. Test/Test<br /><br />"Test"';
$id = 1;
$sql = 'UPDATE table SET text = '.mysql_real_escape_string($html).' WHERE id = '.$id.'';

我建议你使用mysql准备好的语句,为什么:我认为你的变量有一些有趣的字符,扰乱了你的查询。使用准备好的语句,查询是单独发送的,然后在你的变量绑定到它之后,请检查上面的代码

$conn = new mysqli("localhost", "your username", "your pass", "your db");
$myString = "Your string here";
$id  = 1;
$insertDB = $conn->prepare("UPDATE table SET text = ? WHERE id = ?");
$insertDB->bind_param('si', $myString, $id); //bind data, type string and int 'si'
$insertDB->execute(); //execute your query
$conn->close(); //close connection