2011-08-05 70 views
2

我一直在轉換我的SQL代碼到PHP PDO,到目前爲止我有兩個問題。既給保存錯誤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很長?

謝謝。在我的情況

`email_address` = ':EmailAddress 
+1

有一個限制,你的SQL需要如何有效,因爲錯誤說...:P – deceze

+0

我鍵入的值,然後嘗試它,它的工作。 –

回答

6

獨行引號引起這裏語法錯誤。

+0

哇,我看了可能是12次,我甚至沒有發現。謝謝你soo .. –

+0

仔細閱讀錯誤信息。 「...附近的語法錯誤」通常意味着該位置之前的字符不正確。 – deceze

-1

我使用的查詢,而不是做好準備,很明顯當你看到它:

相關問題