我正在慢慢地尝试理解并从MySQL切换到PDO / MySQLi,现在我想尝试如何使用PDO。
我想问一下如何使用$_GET
(通常在execute
中设置用户ID(数字))。据我了解execute
,它只接受字符串,因此我尝试使用PDO::PARAM_INT
$q = $dbh->prepare('SELECT `content` FROM `inventory` WHERE `id` = ?');
$q->execute(array($_GET['u_id'], PDO::PARAM_INT));
不幸的是它没有解决它。它缺少参数吗?它返回我:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in X on line Y
答案 0 :(得分:5)
使用PDO::PARAM_INT
时,您会使用$q->bindParam()
,而您没有这样做:
$q->bindParam(1, $_GET['u_id'], PDO::PARAM_INT);
$q->execute();
在这里,你可以摆脱它:
$q->execute(array($_GET['u_id']));
PDO execute definitely works with non-string parameters; see the manual