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

时间:2015-08-21 17:47:53

标签: php sql ms-access 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”引起的,也不是由其他东西引起的。

1 个答案:

答案 0 :(得分:1)

在您当前的示例中,不会出现任何参数。您需要在查询中传递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上看到更多示例。