2016-02-20 136 views
-3

我想更新我的數據庫,使用MySQL PHP的PDO更新語句。然而,它返回我的錯誤:更新在MySQL的PHP​​ Pdo不工作

SQLSTATE [HY093]:無效的參數編號:綁定變量的數量不匹配令牌

有人能告訴我,我要去哪裏錯了?

我的代碼是:

$sqlupd = "UPDATE 'vendorprof' 
    SET 'vd_loc_add1' = :Add1, 
    'vd_loc_add2' = :Add2, 
    'vd_loc_city' = :City, 
    'vd_loc_state' = :State, 
    'vd_cont_per' = :ContPerson, 
    'vd_cont_mob' = :Mobile, 
    WHERE 'vd_user_id' = :userid2"; 

$profileupd = $conn->prepare($sqlupd); 
$profileupd->bindParam(":Add1",$Add1); 
$profileupd->bindParam(":Add2",$Add2); 
$profileupd->bindParam(":City",$City); 
$profileupd->bindParam(":State",$State); 
$profileupd->bindParam(":ContPerson",$ContPerson); 
$profileupd->bindParam(":Mobile",$Mobile); 

$profileupd->execute(); 
echo $profileupd->rowCount()."records updated Successfully"; 
+0

7個佔位符和6個有界參數? 7!= 6 – frz3993

+0

你忘了綁定:userid2以及 – hasumedic

+0

和....在行尾的冒號必須刪除**'vd_cont_mob'=:手機,** –

回答

1

顯然,你聲明7個參數標記,但只有6你是1個參數標記綁定短。

:Add1 // is bound as $Add1 
:Add2 // is bound as $Add2 
:City // is bound as $City 
:State // is bound as $State 
:ContPerson // is bound as $ContPerson 
:Mobile // is bound as $Mobile 
:userid2 // is bound ... not 

此外,您的查詢是錯誤的。您不要用引號包住列名。另外,您確實在WHERE之前放置了一個逗號......它必須是:

$sqlupd = "UPDATE vendorprof 
    SET vd_loc_add1 = :Add1, 
    vd_loc_add2 = :Add2, 
    vd_loc_city = :City, 
    vd_loc_state = :State, 
    vd_cont_per = :ContPerson, 
    vd_cont_mob = :Mobile 
    WHERE vd_user_id = :userid2"; 
+0

謝謝....得到了問題。 –

+0

@AnamikAdhikary只是一條建議。從你的個人資料來看,你不接受你的問題的答案。請這樣做,它可能會幫助未來的讀者 –

+0

當然...我會這樣做的! 另外一個問題彈出來了..現在我綁定了userid2,我得到這個新錯誤: SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行'vendorprof'SET'vd_loc_add1'='附近使用正確的語法 –