困难的SQL查询语法

时间:2017-05-18 14:22:15

标签: php mysql sql pdo

你好,这里是我的MySQL查询,其中一个获取数据......

$videofetch = $conn->prepare("select * from user_followers as uf join videos as v on uf.followed_id = v.publisher_id where uf.follower_id = ? order by video_id desc limit 5");
$videofetch->execute(array(@$_SESSION ["userid"]));
$vid = $videofetch->fetchALL(PDO::FETCH_ASSOC); 

这段代码工作正常,但是当我试图用AJAX获取更多数据时,我无法编写正确的sql查询语法。

<?php
session_start();
if(isset($_POST["id"]) && !empty($_POST["id"])) {
  include('connectdb.php');
  $lastID = $_POST['id'];
  $videofetch = $conn->prepare("select * from  user_followers as uf join videos  as v  on uf.followed_id = v.publisher_id where uf.follower_id = ? order by video_id  desc limit 5");
  $videofetch->execute(array($_SESSION["userid"]));
  $vid = $videofetch->fetchALL(PDO::FETCH_ASSOC);
  ...

我想添加WHERE video_id < ".$lastID." ..我尝试了几种组合,但每次都显示语法错误。

注意:

1-我从AJAX获取数据到$lastID;

2- $_SESSION ["userid"]有效,不用担心这个

3-SQL错误是:

  

致命错误:未捕获PDOException:SQLSTATE [42000]:语法错误或   访问冲突:1064您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在uf.followed_id = v.publisher_id其中使用附近&#39;作为v的语法   uf.follower_id =&#39; 1&#39;通过vid排序&#39;在第1行   第9行的C:\ wamp64 \ www \ hola.com \ functions \ getdatafoll.php

1 个答案:

答案 0 :(得分:1)

尝试使用你的mysql关键字。它的阅读要好得多。

你已经有了一个WHERE,所以你只需要将它与一个AND结合起来。

SELECT  *
    FROM  user_followers AS uf
    JOIN  videos AS v  ON uf.followed_id = v.publisher_id
    WHERE  uf.follower_id = ?
      AND  video_id < ".$lastID."
    ORDER BY  video_id DESC
    LIMIT  5 

但改变了&#39; &#34; $ lastID&#34;准备好了。