【发布时间】:2012-08-05 20:08:07
【问题描述】:
如您所见,我试图在使用准备好的语句时从表中获取行。
$stmt = $conn->prepare("SELECT * FROM table ORDER BY date DESC LIMIT ?, 10");
$stmt->bindParam(1, $row_start, PDO::PARAM_INT);
$stmt->execute();
while($row = $stmt->fetch()) {
echo $row['title'];
echo $row['name'];
}
它不回显任何东西。
编辑:var_dump 正在显示此日志:
“您的 SQL 语法有错误;请查看手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 1 行的 ''0', 10' 附近"}
编辑 2:这是我声明我的 $row_start
$row_start = "0";
if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] != "0" )
{
$row_start = $_GET['page'];
if ($row_start == "1") {
$row_start = "0";
}else{
$row_start = ($row_start-1) * 10;
}
}
【问题讨论】:
-
直接在数据库中运行 SQL 是否有效?
-
@andrewsi 是的!如果我用数字替换
?并运行它,它确实有效。 -
尝试将参数显式绑定为整数
$stmt->bindParam(1, $row_start, PDO::PARAM_INT); -
数据库有返回什么吗?
var_dump($stmt->errorInfo())打印什么吗? -
@xperator - 哦,我也弄错了强制转换代码 - 它应该是
(int) $row_start和空格。
标签: php arrays pdo prepared-statement fetch