2012-04-07 3 views
-1

내 웹 사이트를 방문한 적이 있는데, 이는 예약 예약 웹 사이트입니다. 아직 알파 테스트 중이므로 분명한 이유로 대중에게 공개되지 않습니다.PHP 사이트의 mySQL 쿼리에서 Database의 값 업데이트 문제

그러나 데이터베이스의 값을 업데이트 할 때 몇 가지 문제가 있습니다.

내가 코드를 게시 한 후 문제를 설명 할 것이다

.. 사용자가 따라서 이전의 형태로 자신의 좌석을 선택합니다 이제

 else { 

    $seatID = $_POST['form_submitted']; 

$query1 = "SELECT seatTaken FROM SEATS WHERE seatNo = '$seatID'"; 
      $result = mysql_query($query1); 
      while($row = mysql_fetch_array($result)) 
      { 
       $taken = $row['seatTaken']; 
      } 


$query2 = "SELECT passNo FROM PASSENGER WHERE username = '$loggedinuser'"; 
      $result = mysql_query($query2); 
      while($row = mysql_fetch_array($result)) 
      { 
       $passno = $row['passNo']; 
      } 


$query3 = "SELECT groupID FROM PASSENGER WHERE username = '$loggedinuser'"; 
      $result = mysql_query($query3); 
      while($row = mysql_fetch_array($result)) 
      { 
       $groupno = $row['groupID']; 
      } 

$query4 = "SELECT flightNo FROM PASSENGER WHERE username = '$loggedinuser'"; 
      $result = mysql_query($query3); 
      while($row = mysql_fetch_array($result)) 
      { 
       $flightno = $row['flightNo']; 
      } 


    // if ($taken = 0) { 

$update = mysql_query("UPDATE PASSENGER SET seatNo = $seatID WHERE username = '$loggedinuser'"); 
$update2 = mysql_query("UPDATE SEATS SET seatTaken = 1, passNo = '$passNo', groupID = '$groupid' WHERE seatNo = '$seatID'"); 
// AND flightNo = '$flightno'" 
    echo '<meta http-equiv="refresh" content="5;url=http://www.mywebsite.com/">'; 
     echo mysql_error(); 

    //} 

} 

?> 

다음에,

$seatID = $_POST['form_submitted']; 

그러나 PHP 코드가 실행될 때 실제로 데이터베이스에서 변경되는 유일한 값은 0 (점유하지 않음)에서 1 (점유 됨)으로 변경된다는 점에서 'seatTaken'의 부울 값입니다. 이러한 쿼리 여기에 참조로

내 데이터베이스에서 필드 passNo와 그룹 ID는 업데이트되지 않습니다 : -

$update = mysql_query("UPDATE PASSENGER SET seatNo = $seatID WHERE username =  '$loggedinuser'"); 
$update2 = mysql_query("UPDATE SEATS SET seatTaken = 1, passNo = '$passNo', groupID = '$groupid' WHERE seatNo = '$seatID'"); 

이 수 누군가가 도움이 있나요? 많은 감사합니다!

+0

'UPDATE'를 실행하면 쿼리를 출력하고 'exit()'를 출력합니다. 디버깅하려면 데이터베이스에 대해 수동으로 실행하고 왜 실행되지 않는지 확인하십시오. 잘못된'WHERE' 절, 아마도? – halfer

+0

이 사실을 알고있을 수도 있지만이 코드에는 SQL 주입 취약점이 있습니다. 매개 변수 바인딩을 사용하거나 적어도 오염 된 입력을 피하십시오. – halfer

답변

1

이 변수 명명 및 문자열 인용

시계, 그들은 일반적으로 (따옴표를 추가) 문자열 리터럴해야합니다. 그리고 다른 문제는 변수의 이름입니다 :

$update = mysql_query("UPDATE PASSENGER SET seatNo = '$seatID' WHERE username = '$loggedinuser'"); 
$update2 = mysql_query("UPDATE SEATS SET seatTaken = 1, passNo = '$passno', groupID = '$groupno' WHERE seatNo = '$seatID'"); 
  • $의 passno 대 $ passNo
  • $는 $ groupno

당신은 또한 당신이 제대로에서 오는 모든 입력을 탈출해야 대 그룹 ID 사용자 http://php.net/manual/en/function.mysql-real-escape-string.php

0

하나는 그룹 ID, $ passNo, $ seatID $의 값을 생성 어떻게 코드에서 볼 수 없습니다. 당신이 당신의 업데이 트를 할 때 그 varaibles 설정되어 있습니까? (그냥 SQL 코드를 에코하여 데이터베이스에 어떤 쿼리가 보내지는지 확인하십시오)

아마도 $ _POST [ 'groupid']와 같이 게시물 요청에서 변수를 가져와야합니다. groupid가 필드의 이름이면 의 형태의. 당신은 MySQL의에서 값을 찾을 때