【发布时间】:2016-04-13 15:44:28
【问题描述】:
我有一个存储过程可以同时向数据库发送和获取博客数据:
CREATE DEFINER=`root`@`localhost` PROCEDURE `post_and_fetch_ans`(
IN answerbody longtext,
IN postid int,
IN answerer int)
BEGIN
INSERT INTO `login`.`answers` (answer_body,userpost_post_id,users_user_id) VALUES (answerbody,postid,answerer);
SELECT * FROM `login`.`answers` WHERE userpost_post_id = postid ORDER BY answer_date DESC LIMIT 1;
END
但我的问题是我在文本编辑器上编写的文本数据量,只有几行发送并存储到数据库。我使用 ajax 将数据发送到 php 页面,该页面将其存储到数据库中。
$('#answerform').submit(function(event){
event.preventDefault();
var data='answer_body='+CKEDITOR.instances.content.getData()+'&userpost_post_id=<?php echo $contents[0]->post_id;?>&users_user_id=<?php echo $userdata->user_id; ?>';
alert(data);
$.ajax('../includes/verifyanswer.php',{
data:data,
type:"POST",
datatype:'json',
success:function(response){
alert(response);
var obj=$.parseJSON(response);
$('#mainanswer').hide();
$('#answerform').hide();
$('#answerthisquestion').show();
var str="<div class='styleanswer' >"+obj[0]['answer_body']+'</div><hr>';
$('#answerwrapper').append(str);
$('#answerwrapper pre code').each(function(i, block) {
hljs.highlightBlock(block);
});
},
error:function(response){
alert(response);
}
});
});
verifyanswer.php 页面是:
require_once '../core/init.php';
$answer=$_POST['answer_body'];
$post_id=$_POST['userpost_post_id'];
$answerer=$_POST['users_user_id'];
if(isset($answer,$post_id,$answerer)){
if(!empty($answer) && !empty($post_id) && !empty($answerer)){
$db = DB::getInstance();
$result = $db->post_and_fetch("CALL login.post_and_fetch_ans(?,?,?)",array($answer,$post_id,$answerer))->result();
echo json_encode($result);
}
}
这一行
$answer=$_POST['answer_body'];
仅包含部分(比实际文本少得多)文本,而不是全文。因此数据库中存储的文本较少
问题的一个例子是
我将这么多的文本发送到数据库中存储
但我只得到存储在数据库中的这几行文本
恭喜数学 SE 成为第一个解锁的网站 这顶帽子,活动不到 18 小时!也适用于 Code Review SE 和 Blender SE,从技术上讲,每个用户只需要三个用户即可获得 这顶帽子(即在获得帽子时,一位用户有 16 或 更多的帽子,另外两个用户有足够的帽子,第一个用户 没有
【问题讨论】:
-
确保您的字段可以容纳更多字符,这可能是它被切断的原因。
-
它的数据类型为longtext
标签: javascript php jquery mysql ajax