Php 加载产品类型=';汽车';同时检查最后一个id大于该id

Php 加载产品类型=';汽车';同时检查最后一个id大于该id,php,mysql,pdo,Php,Mysql,Pdo,我做多层次的网站,所以我有2页;第一页按类型选择,另一页按品牌选择 Exp typepage.html .All .cars .bike .computer $this->sql = "SELECT * FROM $this->table WHERE ID > :last_id ORDER BY ID ASC LIMIT 0, :limit"; 我把所有的产品都放在一张桌子上 数据库 “产品” 我使用ajax进入数据库并检查它,如果用户在type页面中单击all,它将获得所

我做多层次的网站,所以我有2页;第一页按类型选择,另一页按品牌选择

Exp

typepage.html

.All
.cars
.bike
.computer
$this->sql = "SELECT * FROM $this->table WHERE ID > :last_id ORDER BY ID ASC LIMIT 0, :limit";
我把所有的产品都放在一张桌子上 数据库 “产品”

我使用ajax进入数据库并检查它,如果用户在type页面中单击all,它将获得所有PRODUCT_type项目,但如果他们单击cars,它将只查找PRODUCT_type=“cars”。但同时,我还需要使用AJAX进行无限加载,所以当用户向下滚动时,它将加载更多

我添加以获取最后一个加载id,以便跟踪它们的停止位置

sql加载所有内容

.All
.cars
.bike
.computer
$this->sql = "SELECT * FROM $this->table WHERE ID > :last_id ORDER BY ID ASC LIMIT 0, :limit";
因此,现在我可以设置最后一个_id号,如0,它将加载7项数据,当向下滚动时,它将从7继续

但若用户点击汽车,我仍然想向下滚动怎么办?由于数据库中的cars项目ID可能为[1,5,6,7,8],因此编号会有所不同

sql加载类型

$this->sql = "SELECT * FROM $this->table WHERE ID > :last_id AND WHERE PRODUCT_TYPE='cars' ORDER BY ID ASC LIMIT 0, :limit";
这是函数提取

# Get an associative array of results for the sql.

public function _extract($sql, $param_1, $param_2) {
    try {
        $stmt = $this->connection->prepare($sql);
        $stmt->bindParam(':last_id', $param_1, PDO::PARAM_INT);
        $stmt->bindParam(':limit', $param_2, PDO::PARAM_INT);
        $stmt->execute();

        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    } catch (Exception $e) {
        // Echo the error or Re-throw it to catch it higher up where you have more
        // information on where it occurred in your program.
        // e.g echo 'Error: ' . $e->getMessage();

        throw new Exception(
            __METHOD__ . 'Exception Raised for sql: ' . var_export($sql, true) .
            ' Params: ' . var_export($params, true) .
            ' Error_Info: ' . var_export($this->errorInfo(), true),
            0,
            $e
        );
    }
}
我有一个错误未定义的变量:params

ID, PRODUCT_NAME, PRODUCT_TYPE, PRODUCT_BRAND 
因此,我的问题是如何只加载产品&u ITEM='cars',同时检查最后的&u id是否大于id

经验 typepage.html,用户点击car,它加载的数据PRODUCT_TYPE=“car”,现在向下滚动时为[1,4,5,9],再次检查并加载ID大于9的同时为PRODUCT_TYPE=“card”


如何编写SQL?

错误消息不是由SQL语句生成的。当系统试图抛出自定义异常时,将抛出该异常。原因很简单(并在错误消息中明确说明)。您尝试使用未在任何地方定义的变量$params

      throw new Exception(
  __METHOD__ . 'Exception Raised for sql: ' . var_export($sql, true) .
  ' Params: ' . var_export($param_1, true) . ' ' . var_export($param_2, true) .
  ' Error_Info: ' . var_export($this->errorInfo(), true),
  0,
  $e);
现在回到您的SQL语句。语法不正确。where关键字只允许使用一次。将其更改为:

$this->sql = "SELECT * FROM $this->table WHERE ID > :last_id AND PRODUCT_TYPE='cars' ORDER BY ID ASC LIMIT 0, :limit";