PDO准备语句:无法将多个值绑定到查询

时间:2013-02-08 05:15:53

标签: php sql pdo prepared-statement

我是PDO和准备语句的新手,我无法将多个值绑定到查询中。如果只做一个SELECT,我没有问题,例如:

SELECT foo FROM table WHERE id=:something // no problem

但多次,并试图插入我卡住了:

Insert INTO mytable (field1, field2) VALUES (:value1, :value2) // No bueno 

尝试了几种不同的方式,并在这里阅读其他帖子,但没有运气。以下是我遇到问题的一个例子:

$insertSQL = $db->prepare("INSERT INTO voting_poll (ipaddress, choice) 
    VALUES (':ipaddress', :value)");
    $insertSQL->bindParam(':ipaddress', getenv('REMOTE_ADDR'), PDO::PARAM_STR);
    $insertSQL->bindParam(':value', $_POST['radio'], PDO::PARAM_STR);
    $insertSQL->execute();

我收到以下错误:参数号无效:绑定变量数与令牌数不匹配

1 个答案:

答案 0 :(得分:1)

  1. 你不要在params周围加上引号。删除查询中:ipaddress周围的引号。

  2. bindParam()必须与变量一起使用,因为它将参数绑定到变量引用。如果要使用值(例如,getenv()等函数的返回值),请改用bindValue()