2013-06-28 2 views
0

데이터베이스를 재설정 할 스크립트를 작성하려고합니다. phpMyAdmin을 사용하여 가져올 수있는 내보내기를 사용하고 있습니다. SQL 파일은 내가 사용하고있는 스크립트와 같은 위치에 있습니다.PHP와 MySQL을 사용하여 데이터베이스 재설정

이 파일을 실행하면 SQL 파일에서 오류가 발생합니다.

<?php 
$mysqli = new mysqli('host', 'username', 'password', 'database'); 
$mysqli->query('SET foreign_key_checks = 0'); 
if ($result = $mysqli->query("SHOW TABLES")) 
{ 
    while($row = $result->fetch_array(MYSQLI_NUM)) 
    { 
     $mysqli->query('DROP TABLE IF EXISTS '.$row[0]); 
    } 
} 

$mysqli->query('SET foreign_key_checks = 1'); 



$sql_filename = 'clean.sql'; 
$sql_contents = file_get_contents($sql_filename); 
$result = $mysqli->query($sql_contents) or die("Database query failed: ".$mysqli->error); 

$mysqli->close(); 

?> 
+2

어떤 오류 너는 받고 있니? – Karl

+0

나는 쿼리 메소드가 한 번에 하나 이상의 쿼리를 실행할 수 있다고 생각하지 않는다. (유니온과 연결되어 있지 않다면) 아마도 clean.sql 파일의 쿼리를 분리하여 각각의 호출에서 하나의 쿼리를 수행해야 할 것이다. mysqli :: query – paranoid

답변

0

당신은 mysqli::query()에 대한 호출에 하나 이상의 문을 실행할 수 없습니다.

당신은 (; 기본적으로 문 분리 문자입니다), 또는 더 나은 한 번에 파일을 하나 개의 문장을 읽고 싶어이 같은으로 mysql 클라이언트 시스템 호출을 할 수 있습니다

<?php 
    exec("/path/to/mysql -D [your_database] < /path/to/clean.sql"); 
관련 문제