2015-01-19 2 views
-1

PRIMARY KEY가 관련되어있을 때 이러한 명령을 사용하는 방법을 완전히 혼동하므로 CREATE TABLE, ALTER TABLE, UPDATE/SET/WHERE에 대한 질문을하고 싶습니다. , 나는 다른 사람들로부터 다른 조언을 받고 있습니다. 처음에, 나는 데이터베이스에 대한 연결을 설정하고 테이블을 생성, "creation.php"라는 파일에 "hoteldetails.php"라고ALTER TABLE과 INSERT INTO/VALUES 사이의 열 번호 불일치

 $con=mysqli_connect("localhost","root","","Accommodation"); 

     $sql="CREATE TABLE Hotels(Name CHAR(30),City CHAR(30))"; 

내 두 번째 파일, 호텔 손님을 묻는 설문지를 생성 "hoteldetails.php"의 사용자 데이터는 "processhoteldetails.php"에 의해 처리되고이 파일 (완전한 형식으로 제공되지 않음)은 다음을 포함합니다 :

 session_start(); 
     $sessionID = $_SERVER['REMOTE_ADDR'] . " " . 
     date("Y-m-d H:i:s",time()); 

     $_SESSION['sessionID']=$sessionID; 


      $sql = "ALTER TABLE Hotels 
      ADD COLUMN (
      `Name` VARCHAR(30), 
      `City` VARCHAR(30));"; 

      $sql="INSERT INTO Hotels (SessionID, Name, City) 
      VALUES ('$sessionID','$name', '$city')"; 

      if (!mysqli_query($con,$sql)) { 
      die('Error: ' . mysqli_error($con)); 

데이터가 처리 된 후 사용자는 "hotelrecommendation.php"라는 파일에 의해 생성 된 다른 웹 페이지에 연결되며이 웹 페이지 e는 사용자에게 그가 호텔을 다른 사람에게 추천 할 것인지 그리고 등급을 부여 할 것인지 여부를 묻습니다. "hotelrecommendation.php는"(여기에 주어진 코드의 일부)과 같다 "processhotelrecommendation.php"에 의해 처리 : 나는 "hoteldetails.php"의 질문에 답하고 제출을 클릭하면

  session_start(); 

      $sessionID = $_SESSION['sessionID']; 

      if($sessionID == "") { 
    $sessionID = $_SERVER['REMOTE_ADDR'] . " " . date("Y-m-d H:i:s",time()); 
    $_SESSION['sessionID']=$sessionID; 
    } 

      $sql = "ALTER TABLE Hotels 
      ADD COLUMN (
      `Recommendation` VARCHAR(150), 
      `Rating` SMALLINT(5));"; 

      mysqli_query($con,$sql); 

      $sql = "UPDATE Hotels 
      SET `Recommendation` = '$recommendation', 
       `Rating` = '$rating' 
        where sessionID = '$sessionID'"; 

, "Error : ColumnID 필드 목록에 ColumnID가 없습니다"라는 오류 메시지가 나타납니다. ("hotelrecommendation.php"의 질문에 답을 얻지 못하기 때문에이 오류로 인해 해당 페이지가 표시되지 않습니다.) 그러나이 점을 제외하면 다음과 같은 질문을하고 싶습니다.

1) 정말 필요한가요? "processhoteldetails.php"의 ALTER TABLE 명령 또는이 중복입니까?

2) "processhoteldetails.php"에서 "ALTER TABLE Hotels ADD COLUMN"문에 두 개의 열을 추가합니다. "INSERT INTO Hotels VALUES"문에 세 개의 열 (기본 키 SessionID 인 추가 열)이 있습니다. 이렇게하면 혼란 스럽습니다 .SQL 컴퓨터에 테이블을 수정하여 두 개의 열로 구성되도록 요청한 다음 세 개의 값을 가진 동일한 테이블에 값을 삽입하시오 ?? 이것은 완전히 일치하지 않는 것 같습니다. 이것이 내가 ge 인 이유입니까? 세션 ID가 필드 목록에 없다는 오류 메시지가 표시됩니까? SQL 전문가가 내가하는 일과 관계없이 오류 원인을 파악할 수 있기를 바랍니다. 오류 메시지가 계속 나타나서 다음 단계로 진행하지 못하게합니다. 그들은 당신의 CREATE 문에서 해당 테이블에 이미이기 때문에

+0

태그가 [tag : sql-server] 인 이유가 무엇입니까? 그 태그의 정의를 읽었습니까? –

답변

1
  1. 당신은 Hotelsnamecity을 추가 할 수 없습니다. 당신이 추측 할 때 그것은 중복됩니다.

  2. 테이블에 존재하지 않는 필드를 채우려고하기 때문에 오류가 발생합니다. CREATE 또는 ALTER 중 하나를 채우기 전에 SessionID 필드를 추가해야합니다. 당신이이 방식으로 설정할 수있어 왜

그것은, 불분명 당신이해야 아마 CREATE 테이블 정면 및 다수의 필드를 추가 ALTER 문을 없애 모든 관련 필드.

+0

염소, 감사합니다. 30 분 전에했던 것보다 더 많이 이해합니다. – Jason12

관련 문제