我正在使用此代码更新数据库中的值:
function text_save( $page_name, $page_title, $page_text ) {
$servername = "127.0.0.1";
$username = "abcd";
$password = "password";
$dbname = "thedatabase";
// Create connection
$conn = new mysqli( $servername, $username, $password, $dbname );
// Check connection
if ( $conn->connect_error ) {
die( "Connection failed: " . $conn->connect_error );
}
$page_content = $page_text;
$sql = "UPDATE text SET page_title=?, page_text=? WHERE text_name=?";
// prepare and bind
$stmt = $conn->prepare( $sql );
// check whether the prepare() succeeded
if ( $stmt === false ) {
trigger_error( $this->mysqli->error, E_USER_ERROR );
}
$stmt->bind_param( 'sss', $page_title, $page_content, $page_name );
$stmt->execute();
print '<p>Text saved</p>';
$stmt->close();
$conn->close();
}
变量$page_text
是从表单提交上的tinymce文本区域设置的,是HTML内容。
如果我var_dump $page_text
的值,它出现为:
string(23) "<p>test</p>"
当$page_content
数据保存到数据库时,它将保存为:
<p>test</p>
但是,如果我手动将$page_content
的值设置为
<p>test</p>,
e.g。 $page_content = "<p>test</p>";
代替
$page_content = $page_text;
将其保存到数据库中:
<p>test</p>
我需要将HTML保存到数据库而不转换为HTML实体,即<p>test</p>
而不是<p>test</p>
?
这是我到目前为止所尝试的内容:
将页面设置为utf8 - <meta charset="utf-8" />
,
将表单设置为utf8 - accept-charset="UTF-8"
,
将连接设置为utf8 - mysqli_set_charset($conn,"utf8");
使用 - entity_encoding : "raw"
我在这里做错了什么,为什么当我手动设置变量而不是使用表单变量值(看起来相同)时,HTML字符串能够正确保存?
非常感谢!
答案 0 :(得分:2)
答案 1 :(得分:1)
您可能正在寻找html_entity_decode函数,
http://php.net/manual/en/function.html-entity-decode.php
$page_content = html_entity_decode($page_text);
小心注射等。