PHP PDO:语法错误或访问冲突

时间:2011-08-05 06:10:55

标签: php mysql pdo

我一直在将我的sql代码转换为PHP PDO,到目前为止我遇到了两个问题。两者都给出了保存错误

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1', `admin_active` = '0' WHERE `id` = '1' AND `agency_id` = '1' LIMIT 1' at line 1 in ....

这是我的代码:

    $sql  = "UPDATE `tblAgencyLocations` ";
    $sql .= "SET `location_name` = :LocationName, `address1` = :Address1, `address2` = :Address2, ";
    $sql .= "`city` = :City, `state` = :State, `zip_code` = :ZipCode, `phone1` = :Phone1, ";
    $sql .= "`phone2` = :Phone2, `fax1` = :Fax1, `email_address` = ':EmailAddress, ";
    $sql .= "`admin_active` = :LocationActive ";
    $sql .= "WHERE `id` = :AgencyLocationID AND `agency_id` = :agencyID LIMIT 1";

    $STH = $this->prepare($sql);
    $STH->bindParam(':agencyID', $agencyID);
    $STH->bindParam(':LocationName', $LocationName);
    $STH->bindParam(':Address1', $Address1);
    $STH->bindParam(':Address2', $Address2);
    $STH->bindParam(':City', $City);
    $STH->bindParam(':State', $State);
    $STH->bindParam(':ZipCode', $ZipCode);
    $STH->bindParam(':Phone1', $Phone1);
    $STH->bindParam(':Phone2', $Phone2);
    $STH->bindParam(':Fax1', $Fax1);
    $STH->bindParam(':EmailAddress', $EmailAddress);
    $STH->bindParam(':LocationActive', $LocationActive);
    $STH->bindParam(':AgencyLocationID', $AgencyLocationID);
    $STH->execute();

我得到了同样的错误,另一个是选择。您可以“绑定”多少次?或者SQL很长?

谢谢。

2 个答案:

答案 0 :(得分:6)

单独的引号会导致语法错误:

`email_address` = ':EmailAddress

答案 1 :(得分:-1)

在我的情况下,我使用查询而不是准备,当你看到它时显而易见。