我编写了一个函数,它接受四个参数并使用 PDO 将它们传递到我的 MySQL 数据库。
我正在尝试使用 bindParam 以便我可以使用变量来构造查询。
我已按照 PHP 文档中的示例进行操作,但出现以下错误:
错误:
SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
我做错了什么?
function saveAddress($addressLine1, $addressLine2, $town, $county_id) { try { $conn = new PDO('mysql:host=localhost;dbname=' . DB_DATABASE, DB_USER, DB_PASSWORD); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare('INSERT INTO address (`address_line_1`, `address_line_2`, `town`, `county_id`) VALUES (:addressLine1, :addressLine2, :town, :county_id);'); $stmt->bindParam(':addressLine1', $addressLine1, PDO::PARAM_STR); $stmt->bindParam(':addressLine2', $addressLine2, PDO::PARAM_STR); $stmt->bindParam(':town', $town, PDO::PARAM_STR); $stmt->bindParam(':county_id', $county_id, PDO::PARAM_INT); $success = $stmt->execute(array()); } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } }
最佳答案
$stmt->execute 接受一个可选的数组参数,该参数表示要在准备好的语句中绑定(bind)的值。
由于是显式调用bindParam,所以不需要传入数组param来执行。
请注意,如果您将来选择使用数组选项而不是调用 bindParam,请注意该数组中的每个值都将使用 PDO 进行绑定(bind)::PARAM_STR。
关于php - 使用 bindParam 创建 MySQL 查询时出现“无效参数编号”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20819686/