Jump to content


Photo

Executar Query Em .sql


  • Faça o login para participar
8 replies to this topic

#1 Dookan

Dookan

    Turista

  • Usuários
  • 31 posts
  • Sexo:Masculino
  • Localidade:Montenegro - RS

Posted 16/08/2008, 21:02

Olá!
Tenho desenvolvido um script de portais, e estou com um problema na parte da instalação...eu tenho o arquivo .sql com todas querys, mas não consigo executá-lo. Tem algum comando pra executar todos de uma vez???

E mais uma coisinha... como eu faria pra substituir os prefixos das tabelas, caso elas forem diferentes das q o usuário especificou na instalação do script? Tipo... no padrão teria 'prefixo_' e o usuário muda por 'tabelas_'. Como mudar o prefixo sem ter q alterar o .sql?

Vlws.
| Intel Core 2 Quad Q9300 2,5 GHz | HD 320 GB | VGA GeForce 8600GT 512 MB | RAM 2 GB DDR2 |

#2 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 16/08/2008, 21:26

Sobre executar o arquivo poderia fazer assim:

<?
$file=file_get_contents('arquivo.sql');
if(mysql_query("$file")){
 echo 'Arquivo executado com sucesso...';
}else{
 echo 'Erro ao executar arquivo...';
}
?>

Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#3 Dookan

Dookan

    Turista

  • Usuários
  • 31 posts
  • Sexo:Masculino
  • Localidade:Montenegro - RS

Posted 16/08/2008, 21:38

não deu...

o arquivo final da instalação tá por isso aqui:
<?
$sa 		= $_POST["admin"];
$fullurl 	= $_POST["fullurl"];
$passwd 	= $_POST["pwd"];
$email	= $_POST["email"];

require("../../config.php");

$schemas		= file_get_contents("schemas/extra.sql");
if($prefix != "phpclan_"){
	$schemas = str_replace("phpclan_", $prefix, $schemas);
}

$connect 		= @mysql_connect($dbhost, $dbuser, $dbpass);
$dbi 			= @mysql_select_db($dbname);

if(!$connect | !$dbi){
	echo "&lt;script>\n";
	echo "alert('Parece que há informações faltando. Você voltará agora a página 1 da instalação para verificar o que falta.')\n";
	echo "window.location='index.php?step=1';\n";
	echo "</script>";
}

mysql_query($schemas);
?>

infelizmente, n to conseguindo de jeito-maneira-alguma fazer funfar essa maldita query. O tal arquivo .sql tem 30kb, e contém 46 tabelas a serem criadas, fora os valores a serem inseridos... e o mesmo arquivo .sql eu gerei pelo pma. Seria aí o erro? Por exemplo, o pma sempre põe várias linhas comentadas qdo exporta um .sql...
| Intel Core 2 Quad Q9300 2,5 GHz | HD 320 GB | VGA GeForce 8600GT 512 MB | RAM 2 GB DDR2 |

#4 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 17/08/2008, 00:34

Quando você executa esse código mostra algum erro?

Tenta colocar essa linha assim para ver:
mysql_query($schemas) or die(mysql_error());

Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#5 ## Dark Angell ##

## Dark Angell ##

    &nbsp;

  • Usuários
  • 147 posts
  • Sexo:Masculino

Posted 17/08/2008, 01:09

daonde vem esse $prefix??

e tente assim:

if ($prefix !== "phpclan_"){

[ ] 's

Edição feita por: ## Dark Angell ##, 17/08/2008, 01:10.


#6 Dookan

Dookan

    Turista

  • Usuários
  • 31 posts
  • Sexo:Masculino
  • Localidade:Montenegro - RS

Posted 17/08/2008, 20:43

lwirkk: O erro do mysql tá retornando é 'Query was empty'. Estranho. Porém, os comentários do .sql tão em traços, como --, e não ## ou qqr outra coisa... seria isso?

Dark Angell: o $prefix vem do config.php q eu requisitei =]
E qto a usar !== ou !=, tanto faz, o resultado retornava como eu esperava igual ^^

Se eu usar fgets() não fica menos complicado??

ah não, qto aos comentários, n tem nada a ver. Acabei de mudar agora, e não deu nada.
| Intel Core 2 Quad Q9300 2,5 GHz | HD 320 GB | VGA GeForce 8600GT 512 MB | RAM 2 GB DDR2 |

#7 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 17/08/2008, 21:04

Por testar somente, no lugar de:
$schemas		= file_get_contents("schemas/extra.sql");

Coloque:
$handle = @fopen("schemas/extra.sql", "r");
if ($handle) {
	while (!feof($handle)) {
		$schemas .= fgets($handle, 4096);
	}
	fclose($handle);
}

E raros casos o FILE_GET_CONTENTS() não funciona, raros, apesar de ele ser mais viável que fopen(), fgets(), fclose() juntos.

* Script tirado do MANUAL DO PHP. xD

Edição feita por: lwirkk, 17/08/2008, 21:05.

Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#8 victorhb

victorhb

    24 Horas

  • Usuários
  • 489 posts
  • Sexo:Masculino
  • Localidade:Brasília-DF

Posted 17/08/2008, 21:15

lwirkk: O erro do mysql tá retornando é 'Query was empty'. Estranho. Porém, os comentários do .sql tão em traços, como --, e não ## ou qqr outra coisa... seria isso?


Pode ser que o comentário esteja sendo extendido para toda a query, tenta tirar esses comentários.

#9 Dookan

Dookan

    Turista

  • Usuários
  • 31 posts
  • Sexo:Masculino
  • Localidade:Montenegro - RS

Posted 18/08/2008, 13:43

bem, realmente, usando com fgets deu certo. Porém agora tenho outro erro ^_^

Eu deixei o arquivo .sql somente com as querys, sem comentários...só q fica dando o seguinte erro, SEMPRE:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; CREATE TABLE `phpClan_advertising_moedas` ( `mid` int(5) NOT NULL auto_in' at line 8


a tal parte do .sql é esta:

CREATE TABLE `phpclan_advertising` (
 `pid` int(7) NOT NULL auto_increment,
 `pname` varchar(100) NOT NULL default '',
 `pdesc` text,
 `pprice` double(4,2) NOT NULL default '0.00',
 `pmoeda` int(5) NOT NULL default '0',
 PRIMARY KEY (`pid`)
);

CREATE TABLE `phpclan_advertising_moedas` (
 `mid` int(5) NOT NULL auto_increment,
 `mnome` varchar(50) NOT NULL default '',
 PRIMARY KEY (`mid`)
);

Não vejo possível erro aí...

Plz, ALGUÉM??? =/
| Intel Core 2 Quad Q9300 2,5 GHz | HD 320 GB | VGA GeForce 8600GT 512 MB | RAM 2 GB DDR2 |




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq