2013-10-15 5 views
0

EDITED : 아래 작업 코드! 아래multi_query()를 사용할 수 없습니다.

//* opens a connection to a MySQL server */ 
$mysqli = new mysqli($host, $username, $password, $database); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 


$query = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222');"; 
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444');"; 
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing5555','testing66666');"; 
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing77777','testing888888');"; 
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing99999','testing101010');"; 


if ($mysqli->multi_query($query)) { 
    do { 
     /* store first result set */ 
     if ($result = $mysqli->store_result()) { 
      while ($row = $result->fetch_row()) { 
       //printf("%s\n", $row[0]); 
      } 
      $result->free(); 
     } 
    /* print divider */ 
    //if ($mysqli->more_results()) { 
    // printf("-----------------\n"); 
    //} 
    } while ($mysqli->next_result()); 
} 

/* close connection */ 
$mysqli->close();   

BAD 코드 :

나는이 가능한 모든 방법을 시도하고 난 일하러 수없는 것. 하나의 유사 검색어가 입력 할 검색어가 하나만있는 경우에만 작동합니다. 그것이 하나 이상 있다면 그것은 실패합니다.

//* opens a connection to a MySQL server */ 
$mysqli = mysql_connect($host,$username,$password, $database); 



$query = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222')"; 
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444')"; 


if($mysqli->multi_query($query)) 
{ 
    do 
    { 

     if($result=$mysqli->store_result()) 
     { 
      while($row=$result->fetch_row()) 
      { 
       printf("%s<br/>",$row[0]); 
      } 
      $result->free(); 
     } 

     if($mysqli->more_results()) 
     { 
      print("-------------------------------<br/>"); 
     } 
     else 
     { 
      echo '<br/>'; 
     } 
    }while($mysqli->more_results() && $mysqli->next_result()); 
} 

연결이되면, 따라하기 쉽도록 코드 일부가 다듬어졌습니다. 테이블 존재, 등 ... 또한 주요 예제를 시도, 단어, 그리고 그것을 작동하지 않는 것. 내가 어디로 잘못 가고 있니?

+0

"INSERT"문 중 하나에 기존 테이블이 없으면 스크립트가 어떻게 반응하는지 확인하십시오. 오류 처리없이 스크립트를 사용하면 안됩니다. –

답변

1

각 문 끝 부분에 ;을 입력해야합니다. 또한 항상 오류가 있는지 확인하십시오 $mysqli->error.

이제 쿼리는 정확히 정확하지 않습니다이

INSERT INTO `test` (test1, test2) VALUES('testing','testing2222')INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444') 

처럼 보일 것입니다.

+0

어떤 진술에 누락되었습니다; –

+0

@ BrianV. 첫 번째 삽입물. –

+0

@BrianV. - 세미콜론이 아닌 PHP 코드가 아니라 SQL 문입니다. – andrewsi

0

각 쿼리 끝에 세미콜론이 필요합니다. MySQL은이 성명서의 끝을 기다리고있다. MySQL 설명서에서 다음을 참조하십시오.

명령을 한 줄에 모두 지정할 필요는 없으므로 여러 줄이 필요한 긴 명령은 문제가되지 않습니다. mysql은 입력 행의 끝을 찾지 않고 끝나는 세미콜론을 찾음으로써 명령문이 끝나는 곳을 결정합니다. (즉, MySQL은 자유 형식의 입력을 받아 들인다 : 그것은 입력 라인을 수집하지만 세미콜론을 볼 때까지 실행되지 않습니다.)이

변경 :

$query = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222')"; 
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444')"; 

이것 :

$query = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222');"; 
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444');";