如何在PDO中为准备好的查询绑定参数


How bind parameters for a prepared query in PDO?

MS Access中有一个数据库,是否已准备(存储)名称为testQuery:

PARAMETERS tour Number;
SELECT * FROM Tours WHERE ID = tour;

我试图在PHP中运行一个查询,并传递到巡回参数如下:

// ..connect
$tour = 1;
$sth = $db->prepare("select * from testQuery");
$sth->bindParam(':tour', $tour, PDO::PARAM_INT);
$sth->execute();

我得到错误:

SQLSTATE[07002]: COUNT field incorrect: -3010 [Microsoft][Driver ODBC Microsoft Access]
Too few parameters. Required 1. (SQLExecute [-3010] at ext ' pdo_odbc ' odbc_stmt.c: 254)

如何将参数传递给准备好的语句?有一种怀疑是,准备好的查询不是由命令"select"以及其他东西引起的。

在当前示例中不需要参数。您需要在查询中传递where子句。你只需要在用户输入的地方使用占位符。例如

$tour = 1;
$sth = $db->prepare("select * from testQuery WHERE ID = :tour");
$sth->bindParam(':tour', $tour, PDO::PARAM_INT);
$sth->execute();

另一种方法是

$tour = 1;
$sth = $db->prepare("select * from testQuery WHERE ID = ?");
$sth->execute(array($tour));

您可以在手册的页面上看到更多的例子,http://php.net/manual/en/pdo.prepare.php.