我不知道为什么它不起作用。我认为它应该起作用。如果我用0更改查询中的$page。它奏效了。而是使用变量。它不起作用。
PHP
$page = 0;
$query = $sql = "SELECT `Id`, `Title`, `Genre`, `Images`, `Url`, `Width`, `Height` FROM `contents` LIMIT 10 OFFSET '".$page."'";
你的$page
是一个数字,所以你应该做:
$sql = "SELECT `Id`, `Title`, `Genre`, `Images`, `Url`, `Width`, `Height` FROM `contents` LIMIT 10 OFFSET ". $page;
如果您使用的是参数中的page,出于安全考虑,请考虑使用准备好的语句。
PHP准备的报表
$page = 0;
$conn = new mysqli($servername, $username, $password, $dbname);
// prepare and bind
$stmt = $conn->prepare("SELECT `Id`, `Title`, `Genre`, `Images`, `Url`, `Width`, `Height` FROM `contents` LIMIT 10 OFFSET ?");
$stmt->bind_param("i", $page);
只需在准备好的语句中编写sql语句,然后用$stmt->bind_param分配params。
这样,php将自动检查变量是否包含正确的数据类型,并防止您的代码被sql注入所破坏。
如前所述,您将$page用作字符串。大多数时候,PHP是宽容的,但你现在正在进行查询,这些都不那么灵活。
由于您的报价,您的代码结果如下:
OFFSET '0' // See the quotes?
OFFSET 0 // no quotes is what you're looking for
简单地说,您现在将它作为字符串传递。作为人类,您可以看到数字1,但代码看到的文本1,其价值与OFFSET 'a'
大致相同,这对解释器来说没有意义。
此外,如果您想要第一个结果,则不需要偏移。此外,还有一个你所拥有的东西的简写版本:
LIMIT 10,25
这将给你10个项目,抵消25个项目。