解决使用带有常量的 bindParam 时出现的“无法通过引用传递参数 2”错误
在您的代码片段中,您遇到错误“Cannot当尝试使用带有常量值(例如,PDO::PARAM_NULL)的bindParam时,通过引用传递参数2”。出现此错误的原因是,当您传递常量值时,bindParam 需要绑定一个变量。
要解决此问题,您需要使用bindValue 而不是bindParam。 bindValue 将值直接绑定到参数,而不是变量。这是更正后的代码:
try { $dbh = new PDO('mysql:dbname=' . DB . ';host=' . HOST, USER, PASS); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'"); } catch(PDOException $e) { ... } $stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)'); $stmt->bindValue(':v1', null, PDO::PARAM_INT); // Using bindValue with null and explicit type
注意:您可能会想使用bindValue(':param', null, PDO::PARAM_NULL),但这种方法并不总是有效。相反,建议使用显式类型,例如本例中的 PDO::PARAM_INT。
以上是为什么'bindParam”因常量而失败以及如何使用'bindValue”代替?的详细内容。更多信息请关注PHP中文网其他相关文章!