2019.07.19更新:
使用
解决的问题$_REQUEST['editor1']
而不是$ _POST ['editor1']。 不确定原因。希望对遇到这个奇怪问题的人有所帮助。
=========================================
问题描述:
我正在将CKeditor集成到我的HTML表单中。 Ckeditor成功显示在表单上,并且我能够输入一些数据。但是,当我尝试发布表单以存储在数据库中时,我注意到数据库条目缺少所有HTML左括号和右括号。试图在互联网上搜索,但没有运气。请指教。
我的数据库字段具有文本类型。
我已经用TinyMCE替换了Ckeditor,但还是一样。
<div class="form-group">
<label for="content"><?=$str['content']?></label>
<div class="input-group mb-3">
<textarea class="ckeditor" cols="80" id="editor1" name="editor1" rows="20"></textarea>
</div>
</div>
<!-- Initializing the editor -->
<script src="//cdn.ckeditor.com/4.12.1/full/ckeditor.js"></script>
<script type="text/javascript">
CKEDITOR.replace( 'editor1' );
</script>
我尝试使用以下数据输入ckeditor文本区域:
<h3><a href="https://stackoverflow.com/questions/22904776/insert-ckeditor-html-code-into-the-database">Insert ckeditor html code into the database - Stack Overflow</a></h3>
<p> </p>
<p><a href="https://stackoverflow.com/questions/22904776/insert-ckeditor-html-code-into-the-database"><cite>https://stackoverflow.com/questions/.../insert-ckeditor-html-code-into-the-database</cite></a></p>
但是当我存储在数据库中或检索$ _POST ['editor1']数据时,我得到的是:
h3a href=https://stackoverflow.com/questions/22904776/insert-ckeditor-html-code-into-the-databaseInsert ckeditor html code into the database - Stack Overflow/a/h3 p /p pa href=https://stackoverflow.com/questions/22904776/insert-ckeditor-html-code-into-the-databasecitehttps://stackoverflow.com/questions/.../insert-ckeditor-html-code-into-the-database/cite/a/p
所有左括号和右括号均缺失。 我做错了什么?
下面是存储数据的代码:
if (isset($_POST['submit'])) {
$host = DB_HOST; /* Host name */
$user = DB_USER; /* User */
$password = DB_PASS; /* Password */
$dbname = DB_NAME; /* Database name */
$con = mysqli_connect($host, $user, $password, $dbname);
// Check connection
if (!$con) {
die("Connection failed: " . mysqli_connect_error());
}
$subject = $_POST['subject'];
$content = $_POST['editor1'];
$publish = $_POST['publish'];
$publish_date = $_POST['publish_date'];
$updated_by = $_SESSION['memberID'];
mysqli_query($con, " INSERT INTO tbl_announcement (subject, content, publish, publish_date, updated_by )
VALUES ( '$subject', '$content', '$publish' , '$publish_date', '$updated_by')");
答案 0 :(得分:0)
上次使用CKEditor时,我曾经收到过表单提交。然后浏览文档,它提供了一种从编辑器获取数据的方法,您可以通过AJAX保存该数据。
<script>
var data = CKEDITOR.instances.editor1.getData();
// Your code to save "data", usually through Ajax.
</script>
这可以解决您的问题。
答案 1 :(得分:0)
更好地使用 serialize 将CKeditor数据保存在数据库中。 serialize对于存储或传递PHP值而不丢失其类型和结构很有用。
喜欢。
$content = serialize($_POST['CKeditor_content']); //CKeditor_content will your text area field name attr.
在显示unserialize保存数据时。
喜欢。
$content = unserialize($row["CKeditor_content"]);
答案 2 :(得分:0)
答案 3 :(得分:-1)
使用以下命令进行检查: mysqli_real_escape_string(),同时添加数据库