sql查询返回整个表而不是单行

3lxsmp7m  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(421)

在单击div之后,ajax请求被发送到带有单个参数(id)的php。但是,我收到的不是一行,而是一整张table。
不管使用while循环,还是限制查询,我总是得到表中的所有内容。
这是jquery:

$('.fa-expand').click(function() {

    var storyId = $(this)[0].id.split('_')[1];
    var data = {singleStoryInfoWithId: storyId};

    $.ajax({

        url: '../modules/feed.php',
        type: 'POST',
        data: data,
        success: function(response) {

            $('.newsModal').append(response);
            console.log(response);
        }
    });
});

这是php:

if(isset($_POST['singleStoryInfoWithId'])) {

    getStoryWitId($_POST['singleStoryInfoWithId']);
};

function getStoryWitId ($id) {

    global $connectionFeed;

    $query = "SELECT story_title, story_date, story_content, story_cover FROM story WHERE story_id={$id}";

    $result = mysqli_query($connectionFeed, $query);

    $row = mysqli_fetch_assoc($result);

    $story_title = $row['story_title'];
    $story_content = $row['story_content'];

    echo "<h2>$story_title</h2>";
    echo "<h2>$story_content</h2>";
}

它确实发送请求的查询,但是在整个表的末尾。
在我的数据库中,我有5个故事(第一,第二,第三,等等),当我点击第三个故事时,例如,在发送ajax请求之后,我从服务器得到的响应是:第一,第二,第三,第四,第五,第三。最后一个是我唯一需要的。
我到底做错了什么?
提前谢谢各位!

qxgroojn

qxgroojn1#

问题是你从来没有 exit() 一旦您返回了所需的输出。因此,下面的任何说明 if 表达式将被执行并混合到输出中。
在将来,请创建一个最小的,完整的和可验证的例子,以便我们可以看到这个更早。

if(isset($_POST['singleStoryInfoWithId'])) {    
    getStoryWitId($_POST['singleStoryInfoWithId']);
}

echo 'This will still get mixed in with the output';

在你打电话给 getStoryWitId() 你需要 exit() 所以程序忽略了下面的指令。

if(isset($_POST['singleStoryInfoWithId'])) {
    getStoryWitId($_POST['singleStoryInfoWithId']);
    exit();
}

echo 'This will no longer get mixed in with the output';

相关问题