该$_POST['reply']变量包含html标签,<p>text goes here</p>但我无法将其插入数据库.因为reply我使用TinyMCE,当我不使用它(输入为无标签)时,text goes here它被正确插入.
我在这里错过了什么?
try {
$db = new PDO(DB_DRIVER . ":dbname=" . DB_DATABASE . ";host=" . DB_SERVER, DB_USER, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->prepare("INSERT INTO replies(article_id, comment) VALUES (:article_id, :comment)");
$stmt->bindParam(':article_id', $article_id, PDO::PARAM_INT);
$stmt->bindParam(':comment', $_POST['reply'], PDO::PARAM_STR);
if($stmt->execute()) {
echo 'success';
}
$db = null;
} catch(PDOException $e) {
trigger_error('Error occured while trying to insert into the DB:' . $e->getMessage(), E_USER_ERROR);
}
Run Code Online (Sandbox Code Playgroud)
这是表单代码:
<form class="comment-form">
<div class="form-input">
<input type="hidden" name="post_id" value="<?= $row['id']; ?>" />
</div>
<div class="form-input">
<textarea name="reply" id="elm1" rows="8" placeholder="Your comment here" ></textarea>
</div>
<div class="form-input">
<input type="Submit" class="btn btn-primary" id="submit" value="SEND" />
</div>
</form>
<script type="text/javascript">
$(function(){
$(".comment-form").submit(function(event){
event.preventDefault();
$("#results")
.show();
$.post('add-it.php', $(".comment-form").serialize(), function(data) {
$('#submit')
.hide();
$('#results')
.html(data)
.fadeIn('slow');
});
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
由于您使用AJAX,您需要在TinyMCE中手动触发保存功能.在发送请求之前,需要完成这项工作.
$("#results").show();
tinyMCE.triggerSave(); // <--- Add this here
$.post('add-it.php'....
Run Code Online (Sandbox Code Playgroud)
这绝对与PDO无关.print_r($_POST)在将记录插入表之前,您可以简单地查看是否有数据.