Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Saudações a todos,
Estou com um problema simples mas que nao estou conseguindo passar por ele, quero pegar uma unica variavel de uma pesquisa mas nao sei fazer isso.
Segue trecho da programacao
<?php
session_start();
$email = isset($_POST['a_email']) ? $_POST['a_email'] : '';
$senha = isset($_POST['a_senha']) ? $_POST['a_senha'] : '';
$senha=md5($senha);
//print "$email";
include("conexao.php");
$sq1 = "SELECT * FROM empresa_emails WHERE email = '$email' AND senha = '$senha'";
$resultado = $arquivo->query($sq1);
if($resultado !== true) {
$_SESSION['email']=$email;
$_SESSION['senha']=$senha;
$codemp = $resultado['codemp'];
$_SESSION['id_emp']=$codemp;
echo id_emp;
O problema aparece na linha ** $codemp = $resultado['codemp'];**
A mensagem de erro é :
Fatal error: Uncaught Error: Cannot use object of type mysqli_result as array in logar.php:22
A pesquisa parece estar funcionando corretamente então eu quero pegar o id da empresa para dar acesso as demais telas mas ...
Alguém pode me ajudar ?
Obrigado pela atenção
>
5 minutos atrás, Guilherme Luiz disse:
simples...
VOcê não pode utilizar o mysqli_result como array.
neste caso o seu $resultado['codemp'] certamente é formado por array e não uma simples string
tente
$codemp = $resultado['codemp'][0];
Guilherme obrigado pela ajuda, fiz as mudanças conforme a sua orientação só que agora aparece um novo erro
**Fatal error**: Uncaught Error: Cannot use object of type mysqli_result as array in
O que pode ser ?
Na linguagem que eu uso é muito simples pois basta fazer uma igualdade entre a variável e o campo no banco de dados mas aqui to apanhando rsJefferson, tente dar um var_dump e me diga o que retornou.
var_dump($resultado['codemp']);
>
2 minutos atrás, Luiz Gustavo Costa Ceolin disse:
Jefferson, tente dar um var_dump e me diga o que retornou.
var_dump($resultado['codemp']);
Apresentou a mesma mensagem de erro
Fatal error: Uncaught Error: Cannot use object of type mysqli_result as array in C:\xampp\htdocs\xcompbrasil\logar.php:19 Stack trace: #0
Vou explicar o que preciso fazer: O usuario já esta cadastrado na base de dados e quando ele entrar com o seu email e senha o programa pega o id da empresa para usar posteriormente
Tente apenas var_dump($resultado);
$sq1 = "SELECT * FROM empresa_emails WHERE email = '$email' AND senha = '$senha'";
$resultado = $arquivo->query($sq1);
$resultado->execute();
$dados = $resultado->fetch(PDO::FETCH_OBJ);
if($resultado !== true) {
$_SESSION['email'] = $email;
$_SESSION['senha'] = $senha;
$codemp = $dados->codemp;
$_SESSION['id_emp'] = $codemp;
}
Cara, tente assim e me avisa se der certo>
4 minutos atrás, Luiz Gustavo Costa Ceolin disse:
Tente apenas var_dump($resultado);
A resposta para a sua dica foi
object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(5) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) }>
4 minutos atrás, Luiz Gustavo Costa Ceolin disse:
$sq1 = "SELECT * FROM empresa_emails WHERE email = '$email' AND senha = '$senha'";
$resultado = $arquivo->query($sq1);
$resultado->execute();
$dados = $resultado->fetch(PDO::FETCH_OBJ);
if($resultado !== true) {
$_SESSION['email'] = $email;
$_SESSION['senha'] = $senha;
$codemp = $dados->codemp;
$_SESSION['id_emp'] = $codemp;
}
Cara, tente assim e me avisa se der certo
**Fatal error**: Uncaught Error: Call to undefined method mysqli_result::execute() in C:\xampp\htdocs\xcompbrasil\logar.php:19 Stack trace: #0 {main} thrown in
Eu nao imaginava que era tao complexo pegar uma unica variavel pois um filtro em uma tabela.$sq1 = $arquivo->query = "SELECT * FROM empresa_emails WHERE email = '$email' AND senha = '$senha'";
$resultado = $arquivo->prepare($sq1);
$resultado->execute();
$dados = $resultado->fetch(PDO::FETCH_OBJ);
if($resultado !== true) {
$_SESSION['email'] = $email;
$_SESSION['senha'] = $senha;
$codemp = $dados->codemp;
$_SESSION['id_emp'] = $codemp;
}
Tenta assim. Só para confirmar, essa variavel **$arquivo** é sua conexão com o BD neh?>
3 minutos atrás, Luiz Gustavo Costa Ceolin disse:
$sq1 = $arquivo->query = "SELECT * FROM empresa_emails WHERE email = '$email' AND senha = '$senha'";
$resultado = $arquivo->prepare($sq1);
$resultado->execute();
$dados = $resultado->fetch(PDO::FETCH_OBJ);
if($resultado !== true) {
$_SESSION['email'] = $email;
$_SESSION['senha'] = $senha;
$codemp = $dados->codemp;
$_SESSION['id_emp'] = $codemp;
}
Tenta assim. Só para confirmar, essa variavel **$arquivo** é sua conexão com o BD neh?
Sim $arquivo é a conexao com o BD
Coloquei e agora aparece a seguinte mensagem
Warning: mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in C:\xampp\htdocs\xcompbrasil\logar.php on line 20
Notice: Trying to get property of non-object in C:\xampp\htdocs\xcompbrasil\logar.php on line 25
A linha 20 é
$dados = $resultado->fetch(PDO::FETCH_OBJ);
A linha 25 é
$codemp = $dados->codemp;
Cara obrigado pelas ajudas e desculpa estar te atrapalhando por ai$sq1 = $arquivo->query = "SELECT * FROM empresa_emails WHERE email = '$email' AND senha = '$senha'";
$resultado = $arquivo->prepare($sq1);
$resultado->execute();
while ($dados = $resultado->fetch_row())
{
$_SESSION['email'] = $email;
$_SESSION['senha'] = $senha;
$codemp = $dados['codemp'];
$_SESSION['id_emp'] = $codemp;
}
Tenta agora>
2 minutos atrás, Luiz Gustavo Costa Ceolin disse:
$sq1 = $arquivo->query = "SELECT * FROM empresa_emails WHERE email = '$email' AND senha = '$senha'";
$resultado = $arquivo->prepare($sq1);
$resultado->execute();
while ($dados = $resultado->fetch_row())
{
$_SESSION['email'] = $email;
$_SESSION['senha'] = $senha;
$codemp = $dados['codemp'];
$_SESSION['id_emp'] = $codemp;
}
Tenta agora
Agora aparece o seguinte erro
Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::fetch_row() in C:\xampp\htdocs\xcompbrasil\logar.php:20 Stack trace: #0 {main}
Eu estava pensando aqui se para pegar a variavel posso usar um $_GET ?
Cara, pesquise no google sobre esse erro Call to undefined method mysqli_stmt::fetch_row() o problema está em tirar o dado da pesquisa.
>
4 minutos atrás, Jefferson andre disse:
Eu estava pensando aqui se para pegar a variavel posso usar um $_GET ?
Se o resultado está na URL sim, mas como você quer pegar um valor de uma coluna, não.>
1 minuto atrás, Luiz Gustavo Costa Ceolin disse:
Cara, pesquise no google sobre esse erro Call to undefined method mysqli_stmt::fetch_row() o problema está em tirar o dado da pesquisa.
Se o resultado está na URL sim, mas como você quer pegar um valor de uma coluna, não.
Estou lendo um livro a respeito e consultando a internet, o livro pula muitas partes e na internet esta muito acima ou abaixo do meu nivel kkkk
A luta continua rsrs
Valeu por ajudar
Fiz algumas mudanças aqui e aparece um resultado, alterei o banco de dados para a senha sem o md5
$email = isset($_POST['a_email']) ? $_POST['a_email'] : '';
$senha = isset($_POST['a_senha']) ? $_POST['a_senha'] : '';
//$senha=md5($senha);
//print "$email";
include("conexao.php");
$sql = "SELECT * FROM empresa_emails WHERE email = '$email' AND senha = '$senha'";
foreach ($arquivo->query($sql) as $row) {
print $row['email'] . "\t";
print $row['senha'] . "\t";
print $row['codemp'] . "\n";
}
Apareceu a seguinte listagem
1@ 1 92
Sendo email, senha e codigo da empresa cadastrante
Parece que o erro na pesquisa estava no md5, agora só falta pegar a variavel codemp e deixar ela publica ou algo assim
Segue a solução para o problema, apos gerar a query e "listar" o seu conteúdo eu pego a variável com um row
$codemp = $row['codemp'];
E o trecho do codigo fonte para quem quiser usar, deixei a listagem print sem aparecer na tela pois fica feio mostrar a minha consulta para o usuario rs
<?php
session_start();
$email = isset($_POST['a_email']) ? $_POST['a_email'] : '';
$senha = isset($_POST['a_senha']) ? $_POST['a_senha'] : '';
$senha=md5($senha);
//print "$email";
include("conexao.php");
$sql = "SELECT * FROM empresa_emails WHERE email = '$email' AND senha = '$senha'";
foreach ($arquivo->query($sql) as $row) {
// print $row['email'] . "\t";
// print $row['senha'] . "\t";
// print $row['codemp'] . "\n";
}
if($arquivo->query($sql) !== true) {
$_SESSION['email']=$email;
$_SESSION['senha']=$senha;
$codemp = $row['codemp'];
$_SESSION['id_emp']=$codemp;
echo $codemp;
header('location:menuprincipal.php');
} unset ($_SESSION['email']);
unset ($_SESSION['senha']);
unset ($_SESSION['id_emp']);
header('location:index.php');
}
?>
Obrigado pela ajuda **Luiz Gustavo Costa Ceolin **
**Abraços**Valeu cara ;D
simples...
VOcê não pode utilizar o mysqli_result como array.
neste caso o seu $resultado['codemp'] certamente é formado por array e não uma simples string
tente
$codemp = $resultado['codemp'][0];