为什么这些参数在这个Mysql查询中没有经过?

时间:2013-01-15 14:06:04

标签: php mysql

此查询有什么问题?

我无法通过这些参数获取此查询!

$offset = 5;
$rowsperpage = 10;
$stmt = $db->prepare("SELECT * FROM table ORDER BY ID DESC LIMIT ?,?");
if ($stmt->execute(array($offset, $rowsperpage))) {
  while ($row = $stmt->fetch()) {
    echo $row['title'];
  }
}

如果我将查询更改为此工作正常,但我需要传递字符串,因为它们是动态的。

$stmt = $db->prepare("SELECT * FROM table ORDER BY ID DESC LIMIT 5,10");
if ($stmt->execute(array($offset, $rowsperpage))) {
  while ($row = $stmt->fetch()) {
    echo $row['title'];
  }
}

2 个答案:

答案 0 :(得分:4)

我有一种感觉“懒惰执行”将所有参数都视为字符串,因此将它们用引号括起来。

因此,要么使用bind_param显式绑定您的参数,而不是将数组传递给execute()

或将仿真模式设置为关闭

$db->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
连接后

无论如何,您必须先与错误信息联系。
所以,设置这个

$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

将向您显示错误消息

答案 1 :(得分:0)

您忘记了bind_param填写空白