我是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();
我收到以下错误:参数号无效:绑定变量数与令牌数不匹配
答案 0 :(得分:1)
你不要在params周围加上引号。删除查询中:ipaddress
周围的引号。
bindParam()
必须与变量一起使用,因为它将参数绑定到变量引用。如果要使用值(例如,getenv()
等函数的返回值),请改用bindValue()
。