2015-08-29 118 views
0

我試圖插入數據在使用PDO與PHP的MySQL表。我每次收到42000錯誤,我無法理解爲什麼。 這裏有我的代碼:PHP PDO錯誤42000

$getOriginalOffer = $db->prepare("select * from original_offer where id = :id"); 
    $getOriginalOffer->bindParam(":id",$idOriginal); 
    $getOriginalOffer->execute(); 
    $originalOffer = $getOriginalOffer->fetch(PDO::FETCH_ASSOC); 
    $publishOfferQuery = "insert into published_offer (codice_onshop,nome,inbreve,anteprima,galleria1,galleria2,galleria3,galleria4,prezzo,tp_prezzo,bonus_usabile,proposta,condizioni,prenotare,categoria,description,keywords,valido_da,valido_a"; 
    $publishOfferQuery .= "values (:co,:no,:ib,:an,:g1,:g2,:g3,:g4,:pr,:tp,:bo,:pro,:con,:pre,:ca,:de,:ke,:da,:a)"; 
    $publishOffer = $db->prepare($publishOfferQuery); 
    $publishOffer->bindParam(':co', $onshopCode); 
    $publishOffer->bindParam(':no' ,$originalOffer['nome']); 
    $publishOffer->bindParam(':ib' ,$originalOffer['inbreve']); 
    $publishOffer->bindParam(':an' ,$originalOffer['anteprima']); 
    $publishOffer->bindParam(':g1' ,$originalOffer['galleria1']); 
    $publishOffer->bindParam(':g2' ,$originalOffer['galleria2']); 
    $publishOffer->bindParam(':g3' ,$originalOffer['galleria3']); 
    $publishOffer->bindParam(':g4' ,$originalOffer['galleria4']); 
    $publishOffer->bindParam(':pr' ,$originalOffer['prezzo']); 
    $publishOffer->bindParam(':tp' ,$originalOffer['tp_prezzo']); 
    $publishOffer->bindParam(':bo' ,$originalOffer['bonus']); 
    $publishOffer->bindParam(':pro',$originalOffer['proposta']); 
    $publishOffer->bindParam(':con',$originalOffer['condizioni']); 
    $publishOffer->bindParam(':pre',$originalOffer['prenotare']); 
    $publishOffer->bindParam(':ca' ,$originalOffer['categoria']); 
    $publishOffer->bindParam(':de' ,$originalOffer['description']); 
    $publishOffer->bindParam(':ke' ,$originalOffer['keywords']); 
    $publishOffer->bindParam(':da' ,$oggi); 
    $publishOffer->bindParam(':a' ,$a); 
    if($publishOffer->execute()) { 
     echo "<p style='color: red; font-weight: bold; text-align: center'>Operazione effettuata con successo. Attendi 5 secondi...</p>"; 
     sleep(5); 
     header("location: ../elenco_offerte.php"); 
    } 

我也試圖與功能$報價發送參數,造成也有這些參數的HTML標籤,但它給了我:

Strict Standards: Only variables should be passed by 

我很絕望!我如何解決這個問題?
以前謝謝!

+2

我想你已經錯過了')''在$ publishOfferQuery' – NavidIvanian

+0

@ Mr.NaViD你是對的=) – ProtoTyPus

+0

我想如果你使用一個好的IDE,你可以很容易地發現這些問題。 :-) – NavidIvanian

回答

2

您永遠不會關閉列排列的括號。

$publishOfferQuery = "insert into published_offer (codice_onshop,nome,inbreve,anteprima,galleria1,galleria2,galleria3,galleria4,prezzo,tp_prezzo,bonus_usabile,proposta,condizioni,prenotare,categoria,description,keywords,valido_da,valido_a"; <--- here 

應該

$publishOfferQuery = "insert into published_offer (codice_onshop,nome,inbreve,anteprima,galleria1,galleria2,galleria3,galleria4,prezzo,tp_prezzo,bonus_usabile,proposta,condizioni,prenotare,categoria,description,keywords,valido_da,valido_a)"; 

values先下一位...

$publishOfferQuery .= ") values (:co,:no,:ib,:an,:g1,:g2,:g3,:g4,:pr,:tp,:bo,:pro,:con,:pre,:ca,:de,:ke,:da,:a)"; 

或。

正如您的查詢

insert into published_offer 
(codice_onshop,nome,inbreve,anteprima,galleria1,galleria2,galleria3,galleria4,prezzo,tp_prezzo,bonus_usabile,proposta,condizioni,prenotare,categoria,description,keywords,valido_da,valido_a 
values (:co,:no,:ib,:an,:g1,:g2,:g3,:g4,:pr,:tp,:bo,:pro,:con,:pre,:ca,:de,:ke,:da,:a) 
+0

你是對的...我在看20多分鐘的代碼......我討厭這些愚蠢的錯誤。非常感謝你! 10分鐘過後,我給你正確的答案! – ProtoTyPus

2

你必須把)在你的MySQL查詢的末尾:

$publishOfferQuery = "insert into published_offer (codice_onshop,nome,inbreve,anteprima,galleria1,galleria2,galleria3,galleria4,prezzo,tp_prezzo,bonus_usabile,proposta,condizioni,prenotare,categoria,description,keywords,valido_da,valido_a");