2012-07-19 34 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