Ir para conteúdo

POWERED BY:

Arquivado

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

Will Up

Transformar duas querys em uma (?)

Recommended Posts

Olá, amiguinhos. É o seguinte: Meu script tem duas querys, uma INSERT e uma SELECT.

Alguém pode me ajudar a transformar essas duas em uma só UHAUHAAHUHAHAU? Faz dois dias que tô quebrando a cabeça com isso :D

 

 

Segue as duas:

 

$qData = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) VALUES ('', '', '', '', '$filename', '', 'Yes', '', '$aData[Username]', '$Email_Address')";

$qData = "select * from `users` where `Uid` = '$_SESSION[Uid]'";

Abraços \o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que se você adicionar um ponto após a segunda string vai dar certo, por exemplo:

 

$qData = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) VALUES ('', '', '', '', '$filename', '', 'Yes', '', '$aData[Username]', '$Email_Address')";

$qData. = "select * from `users` where `Uid` = '$_SESSION[Uid]'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Arildo, isso não vai funcionar porque você nao delimitou as querys. No MySQL você pode utilizar o ponto-e-virgula (;) para isso.

 

 

Explique mais, amigo, por favor :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Arildo, isso não vai funcionar porque você nao delimitou as querys. No MySQL você pode utilizar o ponto-e-virgula (;) para isso.

 

 

Explique mais, amigo, por favor :)

 

Depois da primeira query, utilize o ";" pra colocar a segunda.

Ex: query 1 : UPDATE(...)

query 2 : Select * from table

Query junta => UPDATE(...); Select * from table

Compartilhar este post


Link para o post
Compartilhar em outros sites

Will,

 

basta colocar ponto-e-vírgula no final de cada query, daí o MySQL irá delimitar cada consulta. Ou seja, você pode enviar 2 consultas numa mesma linha, assim como o PHP trabalha. Só que cada linha de comando funciona até chegar ao delimitador.

 

Em resumo, fica assim:

$qData = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) VALUES ('', '', '', '', '$filename', '', 'Yes', '', '$aData[Username]', '$Email_Address');";
$qData. = "select * from `users` where `Uid` = '$_SESSION[Uid]';";

Espero ter ajudado!

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Arildo, isso não vai funcionar porque você nao delimitou as querys. No MySQL você pode utilizar o ponto-e-virgula (;) para isso.

 

 

Explique mais, amigo, por favor :)

 

Depois da primeira query, utilize o ";" pra colocar a segunda.

Ex: query 1 : UPDATE(...)

query 2 : Select * from table

Query junta => UPDATE(...); Select * from table

 

 

Vish, não entendi nada UHAUHAUAHUAH

Poderia adaptar as querys que eu postei, por favor? :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Copia as linhas que enviei e testa. :)

 

Não deu. Veja o script completo:

 

<?php
include "config.php";


$qData = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) VALUES ('', '', '', '', '$filename', '', 'Yes', '', '$aData[Username]', '$Email_Address');";
$qData. = "select * from `users` where `Uid` = '$_SESSION[Uid]';";

		$rData = mysql_query($qData) or die(mysql_error());

		if(mysql_num_rows($rData) == '0')

		{

			echo "<br><center><b>Não foi possível conectar ao banco de dados. Faça login novamente.</b></center>";

		}

				else

		{

		$aData = mysql_fetch_array($rData);

        }


$file = $_FILES['Filedata'];
$filename = $file['name'];


$path     = $file['tmp_name'];
$new_path = "images_files/".$file['name'];

move_uploaded_file($path, $new_path);

echo "1";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta exibindo algum erro? Mostra aqui se tiver.

 

Erro não, só não grava no DB :(

 

Se eu deixar assim:

 

<?
include"config.php";


$query = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) VALUES ('', '', '', '', '$filename', '', 'Yes', '', '$_SESSION[Username]', '$_SESSION[$Email_Address]')";

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



$file = $_FILES['Filedata'];
$filename = $file['name'];


$path     = $file['tmp_name'];
$new_path = "images_files/".$file['name'];

move_uploaded_file($path, $new_path);



echo "1";
?>

Ele grava a imagem no DB, mas o nome de usuário e email não...

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu caso ele não está armazenando o usuário e email na sessão.

 

Dê um echo nessas 2 variáveis e veja se exibe algum resultado.

 

Outro erro que achei foi um sifrão dentro do SESSION 'email', eu retirei.

 

Outra coisa, tente botar assim:

$query = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) VALUES ('', '', '', '', '$filename', '', 'Yes', '', '{$_SESSION['Username']}', '{$_SESSION['Email_Address']}')";

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu caso ele não está armazenando o usuário e email na sessão.

 

Dê um echo nessas 2 variáveis e veja se exibe algum resultado.

 

Outro erro que achei foi um sifrão dentro do SESSION 'email', eu retirei.

 

Outra coisa, tente botar assim:

$query = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) VALUES ('', '', '', '', '$filename', '', 'Yes', '', '{$_SESSION['Username']}', '{$_SESSION['Email_Address']}')";

 

Não mudou nada :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deu echo nas variáveis da sessão para ver o que estava sendo exibido?

 

Ele não está cadastrando nada no usuario e email, porque possivelmente eles não estão armazenados na sessão, então o problema não está necessariamente aí, mas sim na página que abre a sessão e faz esse armazenamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deixarão de ser duas consultas, executadas em apenas um mysql_query();

 

Aprenda a separar comandos por funcionalidade.

 

O que você está fazendo, é uma alteração ou uma busca??

 

Se você responder 'os dois', deverá efetuar duas consultas ao banco, uma alterando e outra buscando.

 

Comandos 'alteradores': create, drop, insert, delete, update, alter...

 

Comandos 'buscadores': select, show, describe, explain...

 

Comandos alteradores, retornam o número de linhas afetadas.

 

Comandos buscadores, retornam tabelas, dados que podem ser manipulados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deu echo nas variáveis da sessão para ver o que estava sendo exibido?

 

Ele não está cadastrando nada no usuario e email, porque possivelmente eles não estão armazenados na sessão, então o problema não está necessariamente aí, mas sim na página que abre a sessão e faz esse armazenamento.

 

 

Não dei echo, mas acredito que não seja esse o problema.

 

Essa é a página onde o usuário seleciona a imagem:

 

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Upload múltiplo</title>
	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
	<script type="text/javascript" src="../../js/multiUpload.js"></script>
	
	<script type="text/javascript">
		var uploader = new multiUpload('uploader', 'uploader_files', {
			swf:            '../../swf/multiUpload.swf',
			script:         'upload.php',
			expressInstall: '../../swf/expressInstall.swf',
			multi:          true
		});
	</script>

	<style type="text/css">
		@import '../../css/style.css';
		@import "../../css/multiUpload.css";
	</style>

</head>
<body>

	<h1>Upload múltiplo</h1>


	<br />

	<div id="uploader"></div>

	<div id="uploader_files"></div>

	<br style="clear:both" />

	<a href="javascript:uploader.startUpload();">Iniciar Upload</a> | <a href="javascript:uploader.clearUploadQueue();">Limpar fila de Upload</a>

	<br /><br />

</body>
</html>

 

E essa é a que armazena a imagem e grava no DB:

 

<?
include"config.php";


$file = $_FILES['Filedata'];
$filename = $file['name'];


$query = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) VALUES ('', '', '', '', '$filename', '', 'Yes', '', '$_SESSION[Username]', '$_SESSION[Email_Address]')";

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


$path     = $file['tmp_name'];
$new_path = "images_files/".$file['name'];

move_uploaded_file($path, $new_path);



echo "1";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você está dando INSERT e os valores dos campos de usuario e email estão sendo cadastrados como vazio, é porque as variáveis da sessão estão como nula, ou seja, não tem nada armazenado. Eu ainda creio que o problema seja na sessão, mas só descobriremos quando você dar o echo e ver se está exibindo o resultado.

 

Tente botar isso antes de efetuar as consultas:

echo "Usuário: {$_SESSION['Username']} <br />";
echo "E-mail: {$_SESSION['Email_Address']} <br />";

...
continuação do código de INSERT..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta armazenar os valores em outra variavel tipo $usuario e $email, substitua lá no comando SQL do INSERT e veja se grava normalmente assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta armazenar os valores em outra variavel tipo $usuario e $email, substitua lá no comando SQL do INSERT e veja se grava normalmente assim.

 

Deu na mesma.

Tipo, quando eu acesso o arquivo upload.php, ele grava o nome do usuário e email no DB. Estranho... quando a imagem não grava, eles gravam...

 

Não deixarão de ser duas consultas, executadas em apenas um mysql_query();

 

Aprenda a separar comandos por funcionalidade.

 

O que você está fazendo, é uma alteração ou uma busca??

 

Se você responder 'os dois', deverá efetuar duas consultas ao banco, uma alterando e outra buscando.

 

Comandos 'alteradores': create, drop, insert, delete, update, alter...

 

Comandos 'buscadores': select, show, describe, explain...

 

Comandos alteradores, retornam o número de linhas afetadas.

 

Comandos buscadores, retornam tabelas, dados que podem ser manipulados.

 

Sim, estou fazendo os dois.

Sabe como resolvo?

 

Abs.

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.