Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

visitante_php

[Resolvido] erro ao inserir multiplas querys com mysql_query()

Recommended Posts

eu to tentando criar um codigo q reinsira sql mas ta dando erro...

 

insere_sql.php

<?php

/**
 * @author inLuar
 * @copyright 2008
 */
/**
* include("teste_classenovamysql.php");
* $banco = new Mysql();
* $banco->conectar("localhost", "root", "beethoven");
*/
$banco2 = "novo_teste";
mysql_connect("localhost", "root", "beethoven");

$cria = mysql_query("CREATE DATABASE ".$banco2);
if(!$banco2){
	echo "<br>erro ao criar banco 2!<br>".mysql_error();
}else{
	echo "<br>banco criado com sucesso!<br>";
	$seleciona=mysql_select_db($banco2);
	if($seleciona){
$file = file_get_contents("testes.sql");
$insere = mysql_query($file);
if(!$insere){
	echo "<br>erro ao inserir dados no banco! ".mysql_error()."<br>";
}else{
	echo "<br>Dados inserridod com sucesso!<br>";
}	
}else{
	echo "<br>erro ao sleecionar o banco!<br>";
}
}

?>

 

tabela.sql

 

--
-- Estrutura da Tabela menus
--

DROP TABLE IF EXISTS menus;
CREATE TABLE menus (
	id int(11) NOT NULL auto_increment,
	titulo varchar(50) NOT NULL,
	link varchar(50) NOT NULL,
	id_pai int(11) NOT NULL,
	ativo varchar(2) NOT NULL,
	PRIMARY KEY	(id)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 AUTO_INCREMENT=13;

--
-- Extraindo dados da tabela menus
--

INSERT INTO menus VALUES('1', 'raiz', 'index.php', '1', 'n');
INSERT INTO menus VALUES('2', 'a empresa', 'empresa.php', '1', 's');
INSERT INTO menus VALUES('3', 'quem somos', 'quemsomos.php', '2', 's');
INSERT INTO menus VALUES('4', 'nossa historia', 'nossahistoria', '2', 's');
INSERT INTO menus VALUES('5', 'produtos', 'produtos', '1', 's');
INSERT INTO menus VALUES('6', 'eletrodomesticos', 'eletrodometicos.php', '5', 's');
INSERT INTO menus VALUES('7', 'cozinha', 'cozinha.php', '5', 's');
INSERT INTO menus VALUES('8', 'cama', 'cama.php', '5', 's');
INSERT INTO menus VALUES('9', 'fale conosco', 'faleconosco.php', '1', 's');

----------------------------------------------------------

--
-- Estrutura da Tabela user_1
--

DROP TABLE IF EXISTS user_1;
CREATE TABLE user_1 (
	id int(11) NOT NULL auto_increment,
	login varchar(15) NOT NULL,
	senha varchar(15) NOT NULL,
	PRIMARY KEY	(id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


----------------------------------------------------------

--
-- Estrutura da Tabela usersonline
--

DROP TABLE IF EXISTS usersonline;
CREATE TABLE usersonline (
	timestamp int(15) NOT NULL default '0',
	ip varchar(40) NOT NULL default '',
	PRIMARY KEY	(timestamp),
	KEY ip (ip)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Extraindo dados da tabela usersonline
--

INSERT INTO usersonline VALUES('1211119770', '127.0.0.1');
INSERT INTO usersonline VALUES('1211119788', '127.0.0.1');

----------------------------------------------------------

erro apresentado

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 menus ( id  int(11) NOT NULL auto_increment, titulo varchar(50) ' at line 5

 

so q o codigo sql foi gerado pelo proriomysql, como ele pode apresentar erro...?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pro PHP mostrar os erros do mysql você tem que utilizar a função mysql_error(), veja: http://br.php.net/manual/pt_BR/function.mysql-error.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu usei, inclusive, coloquei esse codigo direto no msqyl e deu erro

 

 

eu mandei exportar e vi um peq erro, nao sei se conseguirei adaptar o codigo q esta gerando esse msqyl... vou ver aqui...

 

=/

 

o erro continua, linha 5...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja consegui fazer isso

 

--
-- Estrutura da Tabela menus
--

DROP TABLE IF EXISTS `menus`;
CREATE TABLE `menus` (
	`id` int(11) NOT NULL auto_increment,
	`titulo` varchar(50) NOT NULL,
	`link` varchar(50) NOT NULL,
	`id_pai` int(11) NOT NULL,
	`ativo` varchar(2) NOT NULL,
	PRIMARY KEY	(`id`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 AUTO_INCREMENT=13;

--
-- Extraindo dados da tabela menus
--

INSERT INTO `menus` VALUES('1', 'raiz', 'index.php', '1', 'n');
INSERT INTO `menus` VALUES('2', 'a empresa', 'empresa.php', '1', 's');
INSERT INTO `menus` VALUES('3', 'quem somos', 'quemsomos.php', '2', 's');
INSERT INTO `menus` VALUES('4', 'nossa historia', 'nossahistoria', '2', 's');
INSERT INTO `menus` VALUES('5', 'produtos', 'produtos', '1', 's');
INSERT INTO `menus` VALUES('6', 'eletrodomesticos', 'eletrodometicos.php', '5', 's');
INSERT INTO `menus` VALUES('7', 'cozinha', 'cozinha.php', '5', 's');
INSERT INTO `menus` VALUES('8', 'cama', 'cama.php', '5', 's');
INSERT INTO `menus` VALUES('9', 'fale conosco', 'faleconosco.php', '1', 's');

----------------------------------------------------------

--
-- Estrutura da Tabela user_1
--

DROP TABLE IF EXISTS `user_1`;
CREATE TABLE `user_1` (
	`id` int(11) NOT NULL auto_increment,
	`login` varchar(15) NOT NULL,
	`senha` varchar(15) NOT NULL,
	PRIMARY KEY	(`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


----------------------------------------------------------

--
-- Estrutura da Tabela usersonline
--

DROP TABLE IF EXISTS `usersonline`;
CREATE TABLE `usersonline` (
	`timestamp` int(15) NOT NULL default '0',
	`ip` varchar(40) NOT NULL default '',
	PRIMARY KEY	(`timestamp`),
	KEY `ip` (`ip`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Extraindo dados da tabela usersonline
--

INSERT INTO `usersonline` VALUES('1211119770', '127.0.0.1');
INSERT INTO `usersonline` VALUES('1211119788', '127.0.0.1');

----------------------------------------------------------

Compartilhar este post


Link para o post
Compartilhar em outros sites

Igor, coloque sempre o erro que aparece, isso ajuda muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

no meu script da esse erro...

 

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 `menus` ( `id` int(11) NOT NULL auto_increment, `titulo` varcha' at line 5

no phpmyadmin

Mensagens do MySQL : Documentação
#1064 - 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 '----------------------------------------------------------

--
-- Estrutura d' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Execute essa apenas:

 

DROP TABLE IF EXISTS `user_1`;
CREATE TABLE `user_1` (
   `id` int(11) NOT NULL auto_increment,
   `login` varchar(15) NOT NULL,
   `senha` varchar(15) NOT NULL,
   PRIMARY KEY    (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu importei o arquivo gerado, e executou tudo... sera q eh pq o file_get_content nao esta dando quebra d linha? eu deu o echo e nao deu quebra d linha, mas no sql esta... =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ja tive um dilema parecido. mysql_query() só suportar 1 query por vez. Se você colocar um INsert e depois um Select já da erro. A solução que eu tive foi criar uma função que pega a variavel do comando, quebrava em uma array com explode() em " ); ", ai ele da um foreach e executa query por query.

 

 

---------

 

$cria = mysql_query("CREATE DATABASE ".$banco2);
if(!$banco2){
	echo "<br>erro ao criar banco 2!<br>".mysql_error();
você nao deveria verificar a variavel $cria ao inves de $banco2?

 

da para fazer também

 

$cria = mysql_query("CREATE DATABASE ".$banco2) or die(mysql_error());

 

 

abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente, o sucesso disso vai estar nas linhas do arquivo sql que você está lendo.

Posta um pedaço dele pra gente ver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o arquivo q estou tentando importar eh esse

--
-- Estrutura da Tabela empresas_cats
--

DROP TABLE IF EXISTS `empresas_cats`;
CREATE TABLE `empresas_cats` (
	`empresa_id` int(3) NOT NULL,
	`categoria_id` int(3) NOT NULL,
	PRIMARY KEY	(`empresa_id`,`categoria_id`),
	KEY `categoria_id` (`categoria_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Estrutura da Tabela menus
--

DROP TABLE IF EXISTS `menus`;
CREATE TABLE `menus` (
	`id` int(11) NOT NULL auto_increment,
	`titulo` varchar(50) NOT NULL,
	`link` varchar(50) NOT NULL,
	`id_pai` int(11) NOT NULL,
	`ativo` varchar(2) NOT NULL,
	PRIMARY KEY	(`id`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 AUTO_INCREMENT=13;

--
-- Extraindo dados da tabela menus
--

INSERT INTO `menus` VALUES('1', 'raiz', 'index.php', '1', 'n');
INSERT INTO `menus` VALUES('2', 'a empresa', 'empresa.php', '1', 's');
INSERT INTO `menus` VALUES('3', 'quem somos', 'quemsomos.php', '2', 's');
INSERT INTO `menus` VALUES('4', 'nossa historia', 'nossahistoria', '2', 's');
INSERT INTO `menus` VALUES('5', 'produtos', 'produtos', '1', 's');
INSERT INTO `menus` VALUES('6', 'eletrodomesticos', 'eletrodometicos.php', '5', 's');
INSERT INTO `menus` VALUES('7', 'cozinha', 'cozinha.php', '5', 's');
INSERT INTO `menus` VALUES('8', 'cama', 'cama.php', '5', 's');
INSERT INTO `menus` VALUES('9', 'fale conosco', 'faleconosco.php', '1', 's');
--
-- Estrutura da Tabela user_1
--

DROP TABLE IF EXISTS `user_1`;
CREATE TABLE `user_1` (
	`id` int(11) NOT NULL auto_increment,
	`login` varchar(15) NOT NULL,
	`senha` varchar(15) NOT NULL,
	PRIMARY KEY	(`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

--
-- Estrutura da Tabela usersonline
--

DROP TABLE IF EXISTS `usersonline`;
CREATE TABLE `usersonline` (
	`timestamp` int(15) NOT NULL default '0',
	`ip` varchar(40) NOT NULL default '',
	PRIMARY KEY	(`timestamp`),
	KEY `ip` (`ip`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Extraindo dados da tabela usersonline
--

INSERT INTO `usersonline` VALUES('1211119770', '127.0.0.1');
INSERT INTO `usersonline` VALUES('1211119788', '127.0.0.1');
INSERT INTO `usersonline` VALUES('1211133730', '127.0.0.1');

Compartilhar este post


Link para o post
Compartilhar em outros sites

aos pedaços ele entra....importado pelo phpmyadmin ele entra todo,mas pelo php nao =/

 

esse eh o php q to tentando importar o arquivo

 

<?php

/**
 * @author inLuar
 * @copyright 2008
 */
/**
* include("teste_classenovamysql.php");
* $banco = new Mysql();
* $banco->conectar("localhost", "root", "beethoven");
*/
$banco2 = "novo_teste";
mysql_connect("localhost", "root", "beethoven");

$cria = mysql_query("CREATE DATABASE ".$banco2);
if(!$banco2){
	echo "<br>erro ao criar banco 2!<br>".mysql_error();
}else{
	echo "<br>banco criado com sucesso!<br>";
	$seleciona=mysql_select_db($banco2);
	if($seleciona){
$file = file_get_contents("testes.sql");
$insere = mysql_query($file);
if(!$insere){
	echo "<br>erro ao inserir dados no banco!<br> ".mysql_error()."<br>";
}else{
	echo "<br>Dados inserridod com sucesso!<br>";
}	
}else{
	echo "<br>erro ao sleecionar o banco!<br>";
}
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente, vai dar erro porque há mais de uma query pra executar.

Pra isso você vai ter que utilizar o mysqli (e não mysql), que são classes mais especializadas para se trabalhar com o mysql.

Veja o que você está precisando:

http://br.php.net/manual/pt_BR/mysqli.multi-query.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. É pra usar com o mysql.

Dá uma olhada lá na documentação, tem tudo explicado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.