<?php
try
{
$db = new PDO("mysql:host=localhost;dbname=DBNAME", "USER", "PASSWD");
$stmt = $db->prepare("SELECT id, name FROM testdb ORDER BY time DESC LIMIT :index, 10");
$stmt->bindValue(":index", $_GET['index'], PDO::PARAM_INT);
$stmt->execute();
while( $r = $stmt->fetch(PDO::FETCH_ASSOC) )
{
echo var_dump($r);
}
}
catch( PDOException $e )
{
die("Exception");
}
问题出在这一行:$stmt->bindValue(":index", $_GET['index'], PDO::PARAM_INT);
而具体参数是第二个。
上面的代码不起作用,它不返回任何内容,因此不会执行 while 循环。如果我将 $_GET['index'] 替换为一个数字,比如 10,它就可以正常工作,它返回 10 行。回显 $_GET['index'] 会显示一个数字,因此它应该传递一个数字。我也试过 bindParam,但结果是一样的。
为什么这不起作用?
编辑:
有趣...如果我更换$_GET['index'] with (int)$_GET['index']
它就可以了。