Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

147
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda