使用bindParam创建mySQL查询时出现“参数号无效”错误

时间:2013-12-28 21:40:10

标签: php mysql pdo

我编写了一个带有四个参数的函数,并使用PDO将它们传递给我的MySQL数据库。

我正在尝试使用bindParam,以便我可以使用变量来构造查询。我已经按照PHP文档中的示例进行了操作,但是我收到以下错误:

错误:SQLSTATE [HY093]:参数号无效:没有绑定参数

我做错了什么?

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();
    }
}

1 个答案:

答案 0 :(得分:3)

$ stmt-> execute接受一个可选的数组参数,该参数表示要在准备好的语句中绑定的值。

由于您显式调用bindParam,因此无需传入数组参数来执行。

正如旁注,如果将来您选择使用数组选项而不是调用bindParam,请注意该数组中的每个值都将使用PDO :: PARAM_STR进行绑定。