PDO / PHP:获取数组和准备语句

时间:2012-08-08 16:41:31

标签: php arrays pdo prepared-statement fetch

正如您所看到的,我正在尝试使用预准备语句从表中获取行。

$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服务器版本,以便使用正确的语法   靠近''0',10'在第1行“}

编辑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;
}                       
}

2 个答案:

答案 0 :(得分:3)

默认情况下,值类型为字符串。

您可以将其设置为这样的整数:

$stmt->bindParam(1, $row_start, PDO::PARAM_INT);

<强>更新

即使你将它强制转换为INT,它仍然将它作为字符串传递。

查看您的错误消息:

near ''0', 10' at line 1" }

特别是0之后的结尾',表示它是一个字符串。

0'

<强>更新

即使您传递了预期的PDO类型,也需要手动对变量进行类型转换:

$limit = (int) 1;
$limit2 = (int) 1;


$stmt = $pdo->prepare("SELECT * FROM Table LIMIT :limit, :offset");
$stmt->bindParam(":limit", $limit, PDO::PARAM_INT);
$stmt->bindParam(":offset", $limit2, PDO::PARAM_INT);
$stmt->execute();

答案 1 :(得分:0)

$conn->prepare("SELECT * FROM table ORDER BY date DESC LIMIT ?");
$stmt->execute(array(10));
相关问题