Ver Mensaje Individual
  #14 (permalink)  
Antiguo 29/12/2011, 18:47
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Obtener id de registro ingresado

mysql_insert_id() accede a los mismos recursos de la función LAST_INSERT_ID() de MySQL, y esta función sólo puede devolver el último id autonicremental generado por la sentencia INSERT que se acaba de ejecutar. Usado en cualquier otro contexto devuelve cero (0), lo mismo que LAST_INSERT_ID().
En la medida que invoques la función dentro del foreach(), no deberías tener problemas, porque cada vez que la llames sólo devolverá un numero mayor a cero si el INSERT fue exitoso, y en ningún otro caso.
La idea sería:
Código PHP:
Ver original
  1. $palabra = $tags;
  2.        $array = explode(", ",$palabra);
  3.        foreach ($array as $tagsimple)
  4.               {
  5.               $query = "INSERT INTO Tags (Tag) ";
  6.               $query .= "SELECT '$tagsimple' ";
  7.               $query .= "FROM (SELECT NULL) d ";
  8.               $query .= "WHERE NOT EXISTS ";
  9.               $query .= "(SELECT NULL FROM Tags WHERE Tag = '$tagsimple')";
  10.               $result = mysql_query($query, $dbConn) or die(mysql_error());
  11.               if($result)
  12.                             {$nuevoId = mysql_insert_id();
  13.                             $query2 = "INSERT INTO tag_noticias(IdNoticia, IdTag) ";
  14.                             $query2 .="VALUES(".$IdNoticia.",".$nuevoId.")");
  15.                             $result2 = mysql_query($query2, $dbConn) or die(mysql_error());
  16.                             }
  17.               }

Aún hay un tema pendiente, y es qué es exactamente lo que se supone que hace esta parte de tu INSERT, que yo jamás he visto escribir en todos los años que manejo MySQL:
Código MySQL:
Ver original
  1. SELECT '$tagsimple'
  2.      (SELECT NULL
  3.      FROM Tags
  4.       WHERE Tag = '$tagsimple')
Yo personalmente estoy suponiendo que sea lo que sea que esperas, no está bien escrita, porque las operaciones con NULL siempre dan NULL, por lo que no veo claramente qué es lo que debe lograr esa consulta.
¿Podrías aclararme eso?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)