Ir para conteúdo

POWERED BY:

Arquivado

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

Martinsrj

[Resolvido] Erro - INNER JOIN

Recommended Posts

Ola pessoal!

Estou aqui com duvidas com o seguinte erro:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\ec\Cap5Lab24.php on line 20

dados

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\ec\Cap5Lab24.php on line 26

 

OBS.:

a linha 20 e esta: $num_linhas = mysql_num_rows($res);

a linha 26 e esta: while ($dados = mysql_fetch_assoc($res))

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Acessando dados de um banco de dados Mysql</title>
</head>
<body>
<font face="Arial, Helvetica, sans-serif" size="2" color="red"><b>Ola pessoal! Estes são alguns dados do primeiro livro da Tabela Livros da Editora </b></font><br/><br />

<?
require_once 'conexao.php';

	$query =   "SELECT categorias.categoria, livros.codlivro, livros.titulo, livros.autor, livros.preço"; 
	$query .=  "FROM categorias ";
	$query .=  "INNER JOIN livros ";
	$query .=  "ON categorias.codCategoria = livros.codCategoria ";

	$res = mysql_query($query);	
	
	$num_linhas = mysql_num_rows($res);
	echo $num_linhas . " dados <br><br>";
echo "<table width='100%' border='0'>";
echo "<tr>";
echo "<td bgcolor='maroon'><font color='white' size'1' face='arial'>Codigo</td>"; echo "<td bgcolor='maroon'><font color='white' size'1' face='arial'>Titulo</td>"; echo "<td bgcolor='maroon'><font color='white' size'1' face='arial'>Nome do Autor</td>"; echo "<td bgcolor='maroon'><font color='white' size'1' face='arial'>preço</td>";
echo "</tr>";	
	while ($dados = mysql_fetch_assoc($res)) 
	{ 
	echo "<tr>";
		echo "<td bgcolor='gold'<font color='black' size='2' face='arial'>" . $dados["CodLivro"] . "</td>"; 
		echo "<td bgcolor='gold'<font color='black' size='2' face='arial'>" . $dados["Titulo"] ."</td>";
		echo "<td bgcolor='gold'<font color='black' size='2' face='arial'>" . $dados["Autor"] . "</td>";
		echo "<td bgcolor='gold'<font color='black' size='2' face='arial'>" . $dados["Categoria"] . "</td>";
		echo "<td bgcolor='gold'<font color='black' size='2' face='arial'>R$ " . number_format($dados["preço"],2,",",".") . "</td>";
				
	echo "</tr>";
	}
echo "</table>";
mysql_close($con);
?>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troca esta linha

 

$res = mysql_query($query);

Por esta

$res = mysql_query($query) or die(mysql_error());

Este erro acontece porque houve um erro com a query executada. O comando acima vai exibir o erro do mysql que consta ali.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Carlos!

 

Realizei o seu procedimento e apareceu o seguinte:

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 'INNER JOIN livros ON categorias.codCategoria = livros.codCategoria' at line 1

 

Troca esta linha

 

$res = mysql_query($query);

Por esta

$res = mysql_query($query) or die(mysql_error());

Este erro acontece porque houve um erro com a query executada. O comando acima vai exibir o erro do mysql que consta ali.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então vamos lá... O que eu vejo que pode ser.

$query =   "SELECT categorias.categoria, livros.codlivro, livros.titulo, livros.autor, livros.preço"; // o nome do campo está com Ç mesmo??
	$query .=  "FROM categorias ";// Coloca um espaço antes do from ou depois do preço na linha de cima.
	$query .=  "INNER JOIN livros ";
	$query .=  "ON categorias.codCategoria = livros.codCategoria ";// os nomes dos campos estão corretos?

Outra coisa que você pode fazer é imprimir na tela o Sql antes de executar a query pra ver como ela ficou, somente para debug... Ex.:

echo $query;
	$res = mysql_query($query) or die(mysql_error());

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quero fazer um INNER Join com as tabelas abaixo:

livros  CREATE TABLE `livros` (								 
		  `CodLivro` INT(11) NOT NULL AUTO_INCREMENT,		   
		  `ISBN` VARCHAR(10) DEFAULT NULL,					  
		  `CodCategoria` INT(11) NOT NULL DEFAULT '0',		  
		  `Titulo` VARCHAR(70) DEFAULT NULL,					
		  `Autor` VARCHAR(50) DEFAULT NULL,					 
		  `NPaginas` INT(11) DEFAULT '0',					   
		  `Formato` VARCHAR(15) DEFAULT NULL,				   
		  `Preco` DECIMAL(19,4) DEFAULT '0.0000',			   
		  `resenha` TEXT,									   
		  `Capa` VARCHAR(50) DEFAULT NULL,					  
		  `DtLanc` DATETIME DEFAULT NULL,					   
		  `Desconto` DECIMAL(19,4) DEFAULT '0.0000',			
		  PRIMARY KEY (`CodLivro`),							 
		  UNIQUE KEY `ISBN` (`ISBN`),						   
		  KEY `CodCategoria` (`CodCategoria`),				  
		  KEY `CodLivro` (`CodLivro`),						  
		  KEY `CodCategoria_2` (`CodCategoria`)				 
		) ENGINE=MYISAM AUTO_INCREMENT=22 DEFAULT CHARSET=utf8
categorias  CREATE TABLE `categorias` (							
			  `CodCategoria` INT(11) NOT NULL AUTO_INCREMENT,	  
			  `Categoria` VARCHAR(25) NOT NULL,					
			  PRIMARY KEY (`CodCategoria`)						 
			) ENGINE=MYISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada nos comentários que eu coloquei no meu POST anterior. Tem 2 coisas erradas. Um espaço faltando e um nome de coluna errado (com Ç).

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Carlos pela ajuda!

Tive que realizar o seguinte procedimento:

$query =   "SELECT categorias.Categoria, livros.CodLivro, livros.Titulo, livros.Autor, livros.Preco "; 
	$query .=  "FROM categorias ";
	$query .=  "INNER JOIN livros ";
	$query .=  "ON categorias.CodCategoria = livros.CodCategoria ";

	$res = mysql_query($query) or die(mysql_error());

Dá uma olhada nos comentários que eu coloquei no meu POST anterior. Tem 2 coisas erradas. Um espaço faltando e um nome de coluna errado (com Ç).

 

Carlos Eduardo

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.