【问题标题】:Updating only the recent post using php and Ajax仅使用 php 和 Ajax 更新最近的帖子
【发布时间】: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 statementsbound parameters 一起使用。
  • 您的代码容易受到SQL injection 攻击。您应该通过mysqliPDO 驱动程序使用带有绑定参数的预处理语句。 This post 有一些很好的例子。

标签: php jquery mysql ajax


【解决方案1】:

对于任何最后插入的记录,都将通过 mysql_insert_id 获取。如果您的表包含任何 AUTO_INCREMENT 列,它将返回该值。

<?php
$last_id = mysql_insert_id ( mysqli $link )
SELECT * FROM tbl WHERE pid(your primary key) = '$last_id'
?>

你也可以通过使用限制和订单来做到这一点

SELECT * FROM `table_name` 
ORDER BY `table_name`.`column_name` DESC
LIMIT 1 

注意:不要使用 mysql 它已从 php 5.5.x 弃用

【讨论】:

  • 它是一个遗留系统
  • @Maxwell 好的,你可以通过这两种方式做到这一点。
【解决方案2】:

使用 mysqli_insert_id() 方法获取最后插入的帖子的主键,然后使用该 id 检索该特定帖子并从 php 脚本返回。

【讨论】:

  • 我正在为遗留系统写作.. mysql_ 而不是 mysqli_ 有什么替代方案?
  • SELECT LAST_INSERT_ID(); 这是一个 mysql 查询,所以像执行其他 mysql 查询一样执行它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多