【发布时间】:2018-02-19 15:26:40
【问题描述】:
我在服务器上有一个 ajax 脚本和一个 php 文件,可以将新帖子插入数据库,ajax 脚本可以发布到目标 php 文件并以 json 数据的形式获得响应(它被解码并作为 HTML 数据回显是我的帖子),我用来附加到 div。但是,我的解决方案从我的数据库返回整个结果,即我的查询通过 mysql_query 返回的所有帖子。我如何仅获得最近的结果,或者至少如何仅获得我的最后一篇文章;
$(function() {
$("#PostItemz").on('submit', function(event){
event.preventDefault()
var formData = new FormData(this);
$.ajax({
url: 'inc/modules/post_data.php',
type: 'POST',
data: formData,
success: function (data) {
//here the data return is my post as html object
//data is return via echo on another php page
console.log(data);
$('#postarea').append(data);
$("#PostItemz")[0].reset();
$('.inner-addon, .left-addon, .create-text').hide();
},
cache: false,
contentType: false,
processData: false
});
});
});
这是我的 php 代码:在返回帖子数据的服务器上:
<?php
function getFollowedGroupPosts($user_id){
$sql_query = mysql_query("SELECT gid FROM members WHERE uid = '$user_id'");
//iterate through record set, push records into user defined record_set[] array and return array as json encoded data
.
.
.
.
.
$record_set[] = array('gid' => $rows_b['gid'],
'pid' => $rows_b['pid'],
'post' => $rows_b['post'],
'images' => getPostImages($rows_b['pid']),
'jImages' => $url_string,
'videos' => getPostVideos($rows_b['pid']),
'audios' => getPostAudios($rows_b['pid']),
'date' => timeAgo($rows_b['date']),
'username' => userIdToName($rows_b['uid']),
'filemap_id' => $rows_b['filemap_id'],
'group_name' => groupIdToName($rows_b['gid']),
'comments' => getComments($rows_b['pid']),
'likes' => checkLikeCount($rows_b['pid']),
'dislikes' => checkDislikeCount($rows_b['pid']),
'post_count' => $row_count_b);
}
}
return $record_set;
我如何对 php 进行异步 ajax 调用,以及我在服务器端使用什么查询来返回我页面上已经发布的帖子以外的最新帖子
【问题讨论】:
-
继续阅读 ORDER BY 和 LIMIT 的工作原理。在你阅读了关于 SQL 注入你需要做的事情之后再去做吧。
-
按您的需要订购
-
不要使用
mysql_*函数。它们自 v5.5(2013 年 6 月)起已被弃用,自 v7.0(2015 年 12 月)起已被删除。而是将mysqli_* 或PDO 函数与prepared statements 和bound parameters 一起使用。 -
您的代码容易受到SQL injection 攻击。您应该通过mysqli 或PDO 驱动程序使用带有绑定参数的预处理语句。 This post 有一些很好的例子。