Dúvidas mysqli_fetch_assoc

25/01/2020

0

PHP

Essa rotina funcionava perfeitamente


$usuarios = mysql_query("SELECT * FROM $t_cartao");
$contar = mysql_num_rows($usuarios);

for($b=0; $b<$contar; $b++){
$resEmail = mysql_fetch_assoc($usuarios);
$email = $resEmail['email'];

$sql = mysql_query("SELECT * FROM $t_cartao WHERE email = '$email'");
while($rs = mysql_fetch_array($sql)){

***********************************************************************************

Esta não quer funcionar, o código conta todos as linhas do BD, mas só pega o primeiro usúario referenciado pelo e-mail, as outras linhas

ele não pega o e-mail e grava os dados do primeiro usuário no BD. Resumindo o código não está associando os dados dos outros e-mails..

$usuarios = "SELECT * FROM $t_cartao";
$res = mysqli_query($conexao, $usuarios);
$contar = mysqli_num_rows($res);

for($b=0; $b<$contar; $b++){
$resEmail = mysqli_fetch_assoc($res);
$email = $resEmail['email'];


$sql = "SELECT * FROM $t_cartao WHERE email = '$email'";
$res = mysqli_query($conexao, $sql);
while($rs = mysqli_fetch_array($res)){
Marcos Lemes

Marcos Lemes

Responder

Posts

29/01/2020

Alex William

Olá amigo, tudo bem?

Efetuando um teste de mesa, você verificará seu erro.

Toda a vez que ele incrementar o contador $b no seu for, voce efetua um novo fetch_assoc, ou seja, você esta atribuindo um array associativo toda vez que o for fizer seu loop.

Quando voce executa uma query, ela retorna uma matriz.

Quando você efetua um fetch_assoc, voce diz que cada campo se torna uma coluna, e essa coluna tem x elementos, sendo x igual ao numero de linhas retornadas.

Tente fazer desta forma:
$usuarios = "SELECT * FROM $t_cartao";
$res = mysqli_query($conexao, $usuarios);
$contar = mysqli_num_rows($res);
$resEmail = mysqli_fetch_assoc($res);

for($b=0; $b<$contar; $b++){
$email = $resEmail['email'][$b];


$sql = "SELECT * FROM $t_cartao WHERE email = '$email'";
$res = mysqli_query($conexao, $sql);



Espero ter ajudado.
:D
Responder

29/01/2020

Alex William

Eu inverti os paramentros:

É primeiro linha, depois coluna:
$email = $resEmail[$b]['email'];


Tente das duas formas, veja se funciona.
Responder

29/01/2020

Marcos Lemes

$usuarios = "SELECT * FROM $t_cartao";
$res = mysqli_query($conexao, $usuarios);
$contar = mysqli_num_rows($res);
$resEmail = mysqli_fetch_assoc($res);

for($b=0; $b<$contar; $b++){
$email = $resEmail['email'];

Utilizando o código acima ele inseriu quatro linhas na tabela com os mesmo dados ou seja repetiu os dados corretamente mas apenas da primeira linha da tabela pesquisada, as demais linhas ele ignora.

$usuarios = "SELECT * FROM $t_cartao";
$res = mysqli_query($conexao, $usuarios);
$contar = mysqli_num_rows($res);
$resEmail = mysqli_fetch_assoc($res);

for($b=0; $b<$contar; $b++){
$email = $resEmail['email'][$b];

Neste código ele pegou da primeira até a quarta letra do email do primeiro usuários e os dados foram inseridos foram o nome, a serie e em cadas linha da tabela ele inseriu no campo email uma letra do email do usuário da primeira linha, linha 1 - m, linha 2 - i, linha 3 - k, linha 4 - e.
*************************************************************************

$usuarios = "SELECT * FROM $t_cartao";
$res = mysqli_query($conexao, $usuarios);
$contar = mysqli_num_rows($res);
$resEmail = mysqli_fetch_assoc($res);

for($b=0; $b<$contar; $b++){
$email = $resEmail[$b]['email'];

Neste código ele não inseriu nada no campo email, inseriu nos campos nome e serie.



Responder

03/02/2020

Marcos Lemes

Obrigado!

Reconstruí o código e deu tudo certo, só faltava usar nomes diferentes nos select!

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar