Dúvidas mysqli_fetch_assoc
25/01/2020
0
$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
Posts
29/01/2020
Alex William
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
29/01/2020
Alex William
É primeiro linha, depois coluna:
$email = $resEmail[$b]['email'];
Tente das duas formas, veja se funciona.
29/01/2020
Marcos Lemes
$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.
03/02/2020
Marcos Lemes
Reconstruí o código e deu tudo certo, só faltava usar nomes diferentes nos select!
Clique aqui para fazer login e interagir na Comunidade :)