空值

2016-02-08 29 views
0

進出口使用MySQL的,當我想用​​這個查詢空值

UPDATE books 
    SET ISBN = $ISBN 
    , Title = '$BookTitle' 
    , PublicationDate = '$PublicationDate' 
    , Publisher = '$Publisher' 
    , Edition = $Edition 
    , Volume = $Volume 
    , books.Author_AuthorId = $AuthorId 
WHERE ISBN = $GETISBN; 

用PHP它運作良好,而所有的輸入被填充HTML形式,但如果一個輸入是更新列如何更新列已空或我清除HTML表單和提交表單中的以前的數據它發出此錯誤

您的SQL語法中有錯誤;檢查對應於您的MySQL服務器版本的手冊,在'Volume = 1,books附近使用正確的語法。 Author_AuthorId = 3 WHERE ISBN = 5456165156'在線2

我該怎麼辦?

+0

最有可能的'$ Volume'包含一個單引號或打破查詢的內容。你有沒有考慮準備和執行這個? –

+0

可能是因爲'$ Edition'是一個字符串值,並且缺少單引號。 –

+1

'$ ISBN'可能不是嚴格的數字,因此也需要引號。你會發現,它們包括連字符,其中MySQL的曲解爲減法表達式(也往往用'X'結束) –

回答

1

這是我所贊同

UPDATE `books` SET `ISBN`=5456165156,`Title`='500 Notice About Java',`PublicationDate`='1390-05-25', `Publisher`='Qods Publication',`Edition`=,`Volume`=1, `books`.`Author_AuthorId`=3 WHERE `ISBN`=5456165156 

只要$版是空的,則查詢變化這樣

`Edition`= 

那查詢爲什麼MySQL不能明白應該是什麼樣的價值設置爲版本

+0

大聲笑...這種方式我建議迴應您的查詢 – devpro

+2

這並不回答這個問題。它顯示錯誤的原因,但沒有解釋如何解決它。 – Barmar

+0

如果'$ Edition'是單引號的,在這種情況下你不會得到這個錯誤,但是使用預準備語句將完全避免這個問題。是的,你必須引用國際標準書號,因爲校驗位是'X'的10%。 https://en.wikipedia.org/wiki/Check_digit#ISBN_10 –