php bind_param 限制

php bind_param for limit

我在将值绑定到 php 中的 mysql 查询时遇到问题。

$this->conn->prepare("SELECT * FROM tablename LIMIT ? , ? ");
$pageStart = 11; 
$pageEnd = 20 ;
$stmt->bind_param("ii" , $pageStart , $pageEnd );
$stmt->execute();

这将返回 20 行。有帮助吗?

这是正确的行为。

来自documentation

...
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
...

逗号后面的数字是行数。

如果您想要 10 条记录,只需说明:

SELECT * FROM tablename LIMIT 11 , 10;

Query is executing correctly. Your parameters having incorrect values as per expected output.

如果您想要来自 11-20 查询的记录应该是:

SELECT * FROM tablename LIMIT 11 , 10

当您将 20 作为第二个参数传递时,它返回 20 行

您可以使用 LIMIT offset, row_ countLIMIT row_count OFFSET offset

查看文档 http://dev.mysql.com/doc/refman/5.0/en/select.html

$pageStart = 11;表示结果从11开始,$pageEnd = 20 ;表示11

之后的20个结果

所以你现在得到 20 个结果。

要获得最多 10 的结果,您需要设置 $pageEnd = 10. 它会 return 您 result 11 to 21

关于您应该更改的变量名称

$stmt->bind_param("ii" , $pageStart , $pageEnd );

$stmt->bind_param("ii" , $pageStart , $pageEnd - $pageStart + 1);

因为LIMIT的第二个参数是要选择的行数。第一个参数是偏移量。