Dúvidas mysqli_fetch_assoc

PHP

25/01/2020

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

Curtidas 0

Respostas

Alex William

Alex William

25/01/2020

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
GOSTEI 0
Alex William

Alex William

25/01/2020

Eu inverti os paramentros:

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


Tente das duas formas, veja se funciona.
GOSTEI 0
Marcos Lemes

Marcos Lemes

25/01/2020

$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.



GOSTEI 0
Marcos Lemes

Marcos Lemes

25/01/2020

Obrigado!

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

GOSTEI 0
POSTAR