Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

148
Visualizações
¿Por qué mysqli_fetch_assoc no obtiene la información de la fila para poder insertar detalles en mi tabla?

En primer lugar, sé sobre la inyección de sql y que mi código no es infalible, propenso a la inyección, etc. Trabajaré en eso a continuación.

Ahora: desde mi aplicación de Android a mi archivo PHP, envío una matriz JSON de números de teléfono como:

 [{"phone_number":"+12345678"}, {"phone_number":"+23456789"}, {"phone_number":"34567890"}, {"phone_number":"45678901"} etc... etc...

Estos son contactos en el teléfono del usuario de mi aplicación. Si estos contactos son personas que también son usuarios de mi aplicación, quiero insertar esos números en mi tabla de contacts .

Pero no puedo hacer que funcione. mysqli_fetch_assoc no funciona correctamente. no sé por qué

En mi tabla de contacts tengo 3 columnas: un auto increment , user_id y contact_id . Los primeros dos valores se insertan correctamente, pero contact_id siempre se coloca como '0', lo cual es incorrecto.

Aquí está mi código:

 require('dbConnect.php'); //this is me, +567890123, my user_id in the user table $user_id = '20'; //post all contacts in my phone as a JSON array $json = $_POST['phonenumber']; $array = json_decode($json); foreach ($array as $value) { $phonenumber = $value->phone_number; $sql = "SELECT username FROM user WHERE username = '$phonenumber'"; $result = mysqli_query($con, $sql); $num_rows = mysqli_num_rows($result); if ($num_rows > 0) { echo "phonenumber is " . $phonenumber . "<br>"; // we want to put $phonenumber in the contacts table, as one of +567890123 contacts // In the user table get the associated rows of $phonenumber while ($row = mysqli_fetch_assoc($result)) { // get the associated user_id in that row, that's what we want to put into the contacts table $contact_id = $row['user_id']; $insert_into_contacts_command = "INSERT INTO contacts VALUES(NULL, '$user_id','$contact_id')"; $insert_into_contacts_table = mysqli_query($con, $insert_into_contacts_command); } } //if +353864677745 is NOT in the user table... else { echo 'not a match.'; } }
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

$contact_id = $row['user_id'];

Aquí $contact_id será null , porque está intentando acceder al campo $row['user_id'] de $row que no existe.

En realidad, solo hay un nombre de username de campo en su conjunto de resultados, como especificó:

 $sql = "SELECT username FROM user WHERE username = '$phonenumber'";

Intenta cambiar tu consulta a esto:

 $sql = "SELECT user_id, username FROM user WHERE username = '$phonenumber'";
over 4 years ago · Santiago Trujillo Relatório

0

Su consulta selecciona la columna nombre de username , no ID de userid .

No ha publicado nada sobre el user de la tabla, por lo que es difícil sugerir una nueva consulta, pero supongo que es la siguiente:

 $stmt = mysqli_prepare($con, "SELECT userid FROM user WHERE username = ?"); $stmt->bind_param("s", $phonenumber); $stmt->execute(); $stmt->bind_result($userid); while ($stmt->fetch()) { // Work with $userid }

Notará que esto usa una declaración preparada con un parámetro enlazado. De esa manera, su código no es propenso a las inyecciones de SQL.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda