2014-01-21 1 views
-2

사용자가 페이지를 입력하면 시스템 테이블이 만들어지는 간단한 스크립트 설치를하고 있습니다. 이 테이블의 SQL 코드는 file_get_contents 함수를 통해 액세스하는 것과 동일한 디렉토리에 있으며, mysql_query로 설정됩니다.여러 개의 mysql_query?

하지만 항상 오류가 발생합니다. 예를 들어 phpMyAdmin으로 코드를 실행하면 문제가 발생하지 않기 때문에 이해할 수 없습니다. 그것은 무엇 일 수 있는가?

PHP

$sql = file_get_contents("install.sql"); 
    mysql_query($sql) or die("Error: ".mysql_error()); 

SQL

DROP TABLE IF EXISTS `jogos`; 
    CREATE TABLE `jogos` (
    `id` int(15) NOT NULL AUTO_INCREMENT, 
    `casaid` varchar(255) NOT NULL, 
    `foraid` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

오류

오류 : 당신은 당신의 SQL 구문에 오류가 있습니다; 올바른 구문은 사전에 라인이


감사에서

'CREATE TABLE `jogos` (
    `id` int(15) NOT NULL AUTO_INCREMENT, 
    `casaid` varc' 

근처에서 사용하는 MySQL 서버 버전에 해당하는 설명서를 확인.

편집 : 설명

감사합니다 조엘과 플로리안. 어쨌든, 확장 기능을 사용할 필요가없는 해결책 인 MySQLi에 대해서는 정말로 알지 못합니다. 필요한 사람들을 위해 :

$sqls = ""; // here go your all sql's 
$split_sqls = explode(";", $sql); 
for($index = 0; $index < count($split_sqls) - 1; $index++) { 
    $query = mysql_query($split_sqls[$index]); 
if(!$query) 
    die("Error at $index SQL.\n\n".mysql_error()); 
} 

감사합니다!

+0

[? 내가 왜 PHP에서 mysql_로 * 기능을 사용하지 말아야합니다 (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions -in-php) – Phil

답변

2

하나의 mysql_query에는 여러 개의 쿼리가 지원되지 않습니다. mysqli::multi_query과 같이 지원하지 않는 것을 사용해야합니다. mysql 확장은 좋은 근거로 사용되지 않으므로 mysqli 나 PDO를 배우면 장기적으로 도움이 될 것이다.

0

mysql_query() 함수는 다중 쿼리를 지원하지 않습니다. PHP5에는 세미콜론으로 연결된 하나 또는 여러 개의 쿼리를 실행하는 mysqli_multi_query() 함수가 있습니다.

$link = mysqli_connect("host", "user", "password", "database"); 

$query = file_get_contents("install.sql"); 
mysqli_multi_query($link, $query) or die("Error: ".mysqli_error($link));; 

mysqli_close($link); 

자세한 내용은 here을 참조하십시오.

0

설명해 주신 Joel과 Florian에게 감사드립니다. 어쨌든, 확장 기능을 사용할 필요가없는 해결책 인 MySQLi에 대해서는 정말로 알지 못합니다. 그것을 필요로하는 사람들을 위해 :

$sqls = ""; // here go your all sql's 
$split_sqls = explode(";", $sql); 
for($index = 0; $index < count($split_sqls) - 1; $index++) { 
    $query = mysql_query($split_sqls[$index]); 
if(!$query) 
    die("Error at $index SQL.\n\n".mysql_error()); 
}