gpt4 book ai didi

php - 加载Product_TYPE ='cars',同时检查last_id是否比ID大

转载 作者:行者123 更新时间:2023-11-29 11:05:05 25 4
gpt4 key购买 nike

我正在做多层网站,所以我有 2 个页面;第一页按类型选择,其他页按品牌选择。

经验

typepage.html

.All
.cars
.bike
.computer

我将所有产品存放在一张 table 上数据库“产品”

ID, PRODUCT_NAME, PRODUCT_TYPE, PRODUCT_BRAND 

我正在使用ajax进入数据库并检查它,如果用户在类型页面中单击全部,它将获得所有 PRODUCT_TYPE 项目,但如果他们单击汽车,它将仅查找 PRODUCT_TYPE="cars"。但同时,我还需要使用该 AJAX 来执行无限加载,因此当用户向下滚动时,它将加载更多。

我添加了获取最后一次加载 ID 的功能,以便我可以跟踪它们停止的位置。

sql加载全部

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

现在我可以将last_id数字设置为0,它将加载7个项目数据,向下滚动时将从7继续。

但是如果用户点击汽车而我仍然想向下滚动怎么办?该数字会有所不同,因为数据库中的汽车项目 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";

这是函数_extract

# 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
);
}
}

我有这个错误 undefined variable :参数

所以我的问题是如何仅加载 PRODUCT_ITEM='cars' 并同时检查 last_id 是否大于 ID。

经验值typepage.html,用户点击car,它加载了数据 PRODUCT_TYPE="car",现在是[1,4,5,9],当它向下滚动时,它再次检查并加载大于9的ID,同时是一个 PRODUCT_TYPE= “卡”。

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";

关于php - 加载Product_TYPE ='cars',同时检查last_id是否比ID大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41541667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com