2011-08-05 9 views
2

私はPHP PDOに自分のsqlコードを変換していますが、これまでに2つの問題がありました。両方の保存エラー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は非常に長いですか?

ありがとうございます。

+1

エラーが表示されるので、SQLが有効である必要がある方法には制限があります。P – deceze

+0

値を入力して試してみました。 –

答えて

6

孤独な引用符は、ここでは、構文エラーの原因となっている:私の場合は

`email_address` = ':EmailAddress 
+0

wooow、私は多分12回以上見て、私はそれを見つけることもdidnt。たくさんありがとう。 –

+0

エラーメッセージをよく読んでください。 "Syntax error near ..."は通常、その位置の直前の文字が間違っていることを意味します。 – deceze

-1

あなたがそれを見たとき、私は、クエリを使用して代わりの準備、明らかにされました。