Php 为什么在这个Mysql查询中不使用这些参数?

Php 为什么在这个Mysql查询中不使用这些参数?,php,mysql,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']; }

这个查询有什么问题

我无法让此查询传递这些参数

$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'];
  }
}

我有一种感觉,延迟执行将所有参数都视为字符串,因此将它们括在引号中

因此,要么显式绑定参数,使用bind_param而不是将数组传递到execute

或将仿真模式设置为关闭

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

无论如何,您必须首先与错误消息取得联系。 那么,设置这个

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

将向您显示错误消息

我感觉延迟执行将所有参数视为字符串,因此将它们括在引号中

因此,要么显式绑定参数,使用bind_param而不是将数组传递到execute

或将仿真模式设置为关闭

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

无论如何,您必须首先与错误消息取得联系。 那么,设置这个

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

将向您显示错误消息

您忘记了填写空格

您忘记了填写空格

它给您带来了什么错误?没有给出错误。什么也没出现!如果我替换?,?在类似4,10的情况下,会显示帖子。您的表被称为table?我的表被称为其他名称,为了便于阅读,我将其重命名。它给您带来了什么错误?没有给出错误。什么也没出现!如果我替换?,?在类似4,10的情况下,会显示POST。您的表被称为table?我的表被称为其他名称,为了便于阅读,我对其进行了重命名。无需-参数是从传递到->执行调用的数组中填充的。无需-参数是从传递到->执行调用的数组中填充的。