php
  • mysql
  • 2013-01-08 89 views -4 likes 
    -4

    Possible Duplicate:
    Whats wrong with this query mysql?Mysql不會更新該行

    我正在使用mysql和php來更新記錄。這裏是我的代碼:

    $n=mysql_query("UPDATE chondas SET model='$model1', yearstart=$yearstart1, 
           yearstop=$yearstop1, desc='$desc1', hp='$hp1', 
           engine='$engine1',trim='$trim1', weight='$weight1' WHERE id=$id1"); 
    

    在下面的代碼,如果我拿出desc='$desc1'一切正常。什麼會導致這個錯誤?

    當我測試了下面的代碼在phpMyAdmin我得到這個錯誤:

    #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 'desc='text of the textarea' at line 1.

    +0

    Hey Ers。感謝您的快速回復。我很確定這個錯誤與mysql而不是php有關。因爲沒有「desc」,一切都是完美的。 BTW desc的長度是10,000。我不知道這是否會影響到這一點。再次感謝! –

    回答

    3

    DESCreserved word in mysql所以你需要使用反引號:

    UPDATE chondas SET model='$model1', yearstart=$yearstart1, yearstop=$yearstop1, `desc`='$desc1', hp='$hp1', engine='$engine1',trim='$trim1', weight='$weight1' WHERE id=$id1 
    

    你也應該切換到PDO(或mysqli的),並用約束變量,以準備語句避免潛在的SQL注入。

    +1

    我很驚訝本網站的答案有多快和準確。謝謝! –

    +0

    @ user1959665我提前3分鐘回答,看到您的問題正下方發佈的第一條評論。點擊鏈接並閱讀頁面上的答案。 – Jocelyn

    +0

    我上面的評論是對大家的一般評論!謝謝! –

    2

    DESC是在MySQL的保留字。

    與反引號轉義

    `desc` = '$desc1' 
    
    +0

    ohhhh,謝謝!現在完美運作。 –

    +0

    歡迎您:) –

    0

    如果您在phpMyAdmin的變量名,如您的查詢將不會運行:

    UPDATE chondas SET model='$model1', yearstart=$yearstart1, 
    yearstop=$yearstop1, **desc='$desc1'**, hp='$hp1', 
    engine='$engine1',trim='$trim1', weight='$weight1' WHERE id=$id1 
    

    另外,如果你混合你的「」和「」如PHP將不會運行:"UPDATE chondas SET model='$model1'...

    相關問題