php在phpmyadmin中保存html代码

php在phpmyadmin中保存html代码,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,我在phpmyadmin中保存html代码时遇到了一个小问题 这就是我想保存在sql表中的html代码$html\U txt。我从另一个sql查询中获取代码 An g&uuml;nstigen Tagen "Paradies" ist es dienlich. Test/Test<br /><br />"Test" 这是行不通的。有什么想法吗?我也这样试过: $id = 1; $html_txt; $sql = 'UPDATE table SET text =

我在phpmyadmin中保存html代码时遇到了一个小问题

这就是我想保存在sql表中的html代码$html\U txt。我从另一个sql查询中获取代码

An g&uuml;nstigen Tagen "Paradies" ist es dienlich.
Test/Test<br /><br />"Test"
这是行不通的。有什么想法吗?我也这样试过:

$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 . '';
如果我不说:

请使用参数化查询 请避免使用易受攻击的sql语句。 使用mysql_escape_字符串来支持html实体,并且文本可能是kwyword,所以请像下面这样使用文本

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

您应该正确地转义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.'';

我建议您使用mySQli prepared statement,原因:我认为您的变量的某些地方有搞笑的字符,这些字符会干扰您的查询。使用prepared statement,查询将单独发送,然后在您的变量绑定到它之后,请检查上面的代码

$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

这应该是一个评论,但有点冗长

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

您尚未提供任何试图亲自调查问题的详细信息。“不工作”并不能很好地描述所发生的事情——在这种情况下,预期的结果对我来说是相当明显的,但事实并非总是如此。我也知道实际结果会是什么——但你也没有记录下来。在大多数情况下,如果代码的行为不符合预期,则会在某个地方报告一条错误消息—您应该查找它。DBMS可能会返回一条特定的错误消息—您的代码应该轮询该消息—特别是当您遇到问题时


如果您查看了发送的SQL或将其包含在帖子中,这也有助于诊断。

mysql\u escape\u字符串不起作用。不推荐使用:mysql\u escape\u string[function.mysql real escape string.php]:此函数不推荐使用;改用mysql\u real\u escape\u字符串。我也尝试过mysql\u real\u escape\u string,但它也不起作用。@yab86 mysql\u函数已弃用,这意味着你不应该使用它们,它们将从PHP中删除,来自非洲Matjie的最佳解决方案。我有它:text=\.mysql\u real\u escape\u string$html\u txt。\'有趣的是:如果我手动将查询直接放在phpMyAdmin->SQL中,它会发生变化,例如,值10万到10万您似乎对phpMyAdmin是什么感到困惑-这是一个由其他人编写的用于访问mysql数据库的应用程序,它/恰巧/是用PHP编写的-它的工作/行为与您的问题几乎没有关系。尽管问题是数据的表示,但正确理解和实现这一点并不是解决特定功能问题的可选方法-它是开发可靠和安全代码的基础。
$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