2013-04-30 5 views
1

데이터베이스 내에서 테이블을 생성하기 위해 3 개의 쿼리를 실행하려고하는데 구문 오류를 발생시키는 쿼리를 실행하지 않습니다. 누구든지이 코드를보고 내가이 작업을하기 위해 잘못 입력 한 것을 말할 수 있습니까? 나는 모든 것을 시도했으며 실행 쿼리를 얻을 수 없습니다!mysqli 다중 쿼리가 쿼리를 실행하지 않습니다

$dh = mysqli_connect($_POST['hostname'], $_POST['username'], $_POST['password'],   $_POST['database']); 
if(! $dh) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 
echo "Connected successfully...<br /><br />"; 

$query = "CREATE TABLE IF NOT EXISTS `content` (
       `content_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
       `section_id` INT(11) NOT NULL, 
       `header` VARCHAR(255) NOT NULL, 
       `sub_header` VARCHAR(255) NOT NULL, 
       `date_range` VARCHAR(64) NOT NULL, 
       `content_body` TEXT NOT NULL 
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1"; 

$query .= "CREATE TABLE IF NOT EXISTS `sections` (
       `section_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
       `title` VARCHAR(255) NOT NULL, 
       `position` INT(11) NOT NULL 
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1"; 

$query .= "CREATE TABLE IF NOT EXISTS `sections` (
       `user_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
       `username` VARCHAR(32) NOT NULL, 
       `password` VARCHAR(32) NOT NULL, 
       `first_name` VARCHAR(32) NOT NULL, 
       `last_name` VARCHAR(32) NOT NULL, 
       `email` VARCHAR(1024) NOT NULL 
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1"; 

$retval = mysqli_multi_query($dh, $query); 

답변

1

검색어 사이에 세미콜론이없고 모든 항목을 한꺼번에 결합하여 한 번에 실행합니다.

당신은 당신이 당신은 쿼리 사이에 세미콜론 누락 각 쿼리

$query = "CREATE TABLE IF NOT EXISTS `content` (
       `content_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
       `section_id` INT(11) NOT NULL, 
       `header` VARCHAR(255) NOT NULL, 
       `sub_header` VARCHAR(255) NOT NULL, 
       `date_range` VARCHAR(64) NOT NULL, 
       `content_body` TEXT NOT NULL 
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1;"; 

$query .= "CREATE TABLE IF NOT EXISTS `sections` (
       `section_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
       `title` VARCHAR(255) NOT NULL, 
       `position` INT(11) NOT NULL 
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1;"; 

$query .= "CREATE TABLE IF NOT EXISTS `sections` (
       `user_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
       `username` VARCHAR(32) NOT NULL, 
       `password` VARCHAR(32) NOT NULL, 
       `first_name` VARCHAR(32) NOT NULL, 
       `last_name` VARCHAR(32) NOT NULL, 
       `email` VARCHAR(1024) NOT NULL 
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1;"; 
+0

당신이 말한 그것은 종류의 일 :

그래서 당신은 이런 식으로 뭔가를 실행하기 위해 노력하고 있습니다. 이제 첫 번째 두 쿼리를로드하지만 세 번째 쿼리는로드하지 않습니다. 내 코드는 위의 것과 같습니다. – zachstarnes

+0

오류 메시지가 나타 납니까? 그렇다면 공유 할 수 있습니까? – fullybaked

+0

나는 그렇지 않다. 세 번째가 아닌 처음 두 개의 쿼리 만 표시합니다. 나는 세 번째 테이블을 놓치고있다. – zachstarnes

1

의 끝에 세미콜론이 필요하다는 등의 여러 쿼리를 실행하는 경우. 내가 한 <...> ENGINE=InnoDB DEFAULT CHARSET=latin1CREATE TABLE <...>

관련 문제