2012-07-19 63 views
0

親愛的朋友我試圖更新重新編碼,但下面的消息總是能想出更新我的紀錄

「您的SQL語法錯誤;檢查對應於您的MySQL服務器版本正確的語法手冊在'9號線附近'使用'

該代碼看起來不錯,但我不明白我做錯了什麼可以有人幫助。 在此先感謝。

<?php 
if(isset($_POST['edit'])){ 
     // this id wil be pulled from the URL above. 
     $hot_id  = $_GET['hotl']; 
     $hotel_name = escape_value($_POST['title']); 
     $hotel_star = escape_value($_POST['category']); 
     $shortdes = escape_value($_POST['shortdes']); 
     $country = escape_value($_POST['country']); 
     $address = escape_value($_POST['address']); 
     $pcode  = escape_value($_POST['pcod']); 
     $city  = escape_value($_POST['city']);   

     $query = "UPDATE Hotels SET 
        hotel_name = '{$hotel_name}', 
        star ='{$hotel_star}', 
        description = '{$shortdes}', 
        country = '{$country}', 
        hotel_address = '{$address}', 
        hotel_postal_code = '{$pcode}', 
        hotel_city = '{$city}' 
        WHERE hotel_id = {$hot_id}";     
      $result = mysql_query($query, $connection); 

      if(mysql_affected_rows() == 1){ 
      //Success 
      }else{ 
      die("Some thing wrong with the Upadate: ". mysql_error()); 
      } 

     }else{ 
     //error ocurred 
     } 
?> 

我在PHP和Mysql論壇發佈我的問題,因爲我不知道問題出在哪裏。

+7

顯示我們**生成的** SQL。 – 2012-07-19 21:09:53

+1

是的,錯誤信息告訴你發生了什麼問題。只需修復SQL,你就很好。您可能需要參數化查詢,這會使您的問題更容易消失。但是你需要說「bye bye mysql_ * functions」(這不是那麼難),你可以在PHP手冊中看到) – hakre 2012-07-19 21:12:14

+3

作爲馬特說你應該嘗試回顯實際的sql語句,看看它是什麼expext。你也應該看看使用mysqli或PDO而不是mysql_ *語句準備好的語句。 – 2012-07-19 21:13:28

回答

1

調試SQL語句(如上所述)的最簡單方法是在提交之前回顯出查詢,並確切地查看要發送到數據庫的內容。話雖這麼說,你爲什麼不嘗試把一些引號(」「)在你的$ hot_id VAR:

WHERE hotel_id = '{$hot_id}'

+0

,因爲它不是字符串 – 2012-07-19 21:37:18

+1

@Salim Almughairi :)像這樣'echo $ query;'查看變量'$ query',看看你得到了什麼(並嘗試直接執行你在終端上得到的結果,可能是phpmyadmin)。 – Lion 2012-07-19 21:41:48

-1

某處在更新應該有$ hot_id:

"UPDATE Hotels SET 
    hotel_name = '{$hotel_name}', hotel_id = '{$hot_id}', etc