Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Insertar y recuperar id para nueva inserción [PROBLEMA]

Estas en el tema de Insertar y recuperar id para nueva inserción [PROBLEMA] en el foro de PHP en Foros del Web. Me gustaría saber como podría estructurar una función para insertar en una tabla, recuperar el id de ese registro y usar ese id para insertar ...
  #1 (permalink)  
Antiguo 23/03/2016, 19:15
Avatar de FkFrank  
Fecha de Ingreso: marzo-2016
Mensajes: 5
Antigüedad: 8 años, 1 mes
Puntos: 0
Pregunta Insertar y recuperar id para nueva inserción [PROBLEMA]

Me gustaría saber como podría estructurar una función para insertar en una tabla, recuperar el id de ese registro y usar ese id para insertar en otra tabla.

hasta el momento esto es lo que tengo pero no se como lograr ejecutar el resto de sentencias, ya que solo se esta realizando una, la primera.

Código PHP:
        function saveValores(){
            
$this->setValoresToSave();
                
//$today=$this->verifica->da_formato(date("y-m-d"),
                //"text",$this->bd->cnn);
                
$sql="INSERT INTO usuarios (correo, password)
                VALUES ($this->correo,$this->password);"
;
                    return 
$this->bd->executeSQL($sql);
                        
$id=mysql_query("Select LAST_INSERT_ID()");
                        
//$id = $result;
                //$id = mysqli_insert_id();
                
$sql="INSERT INTO mascotas (id_usuario,foto,nombreMascota,descripcion,edadMascota) VALUES ('".$id."',$this->nomMasc,$this->edadMasc,$this->fotografia,$this->descripcion)";
                    return 
$this->bd->executeSQL($sql);
                    
$result=mysql_query("Select LAST_INSERT_ID()");
                    
$idMasc=$result;
                    
$table=$this->tipoMascota;
                
$sql="INSERT INTO '".$table."' (id_usuario) VALUES ('".$idMasc."')";
                return 
$this->bd->executeSQL($sql);
        }
    } 
Agradecería mucho que me pudieran ayudar.

Última edición por FkFrank; 23/03/2016 a las 23:30
  #2 (permalink)  
Antiguo 24/03/2016, 06:54
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Insertar y recuperar id para nueva inserción [PROBLEMA]

Ok...

¿Por qué pones ese return en estas líneas?:
Código PHP:
Ver original
  1. return $this->bd->executeSQL($sql);
¿Estás consciente que un return en una función hace que el proceso se temrine, devolviendo el valor indicado?
Todo lo que hay a continuación de esa sentencia se ignora. No existe.

Fuera de eso, el método correcto para recuperar un ID autoincremental generado en un INSERT es el que tienes allí deshabilitado:

Código PHP:
Ver original 

Ahora bien, tienes un error adicional y es de los graves: Estás entremezclando el uso de la librería de acceso a datos MYSQL con la librería MYSQLI.
NO son la misma librería. Si usas MYSQLI no puedes usar funciones "mysql_", sino las "mysqli_", y viceversa.
Esto se ve claramente en esta línea:
Código PHP:
Ver original
  1. $id=mysql_query("Select LAST_INSERT_ID()");
Jamás obtendrás eso, porque invocas a la función de la librería equivocada.

¿Se entiende?

Finalmente: No postees el mismo problema en diferentes foros. Está totalmente prohibido en las PDU y esos posts se borrarán sin previo aviso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 24/03/2016, 11:35
Avatar de FkFrank  
Fecha de Ingreso: marzo-2016
Mensajes: 5
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Insertar y recuperar id para nueva inserción [PROBLEMA]

Entiendo y gracias por la pronta respuesta, si soy malo a un para todo esto del php.

He quitado el return y realizado los cambios en cuanto a la forma de recuperar el id según me indicas para usar mysqli.

esta es la forma en la que tengo el código ahora:
Código PHP:
Ver original
  1. function saveValores(){
  2.             $this->setValoresToSave();
  3.                 //$q=$_POST['q'];
  4.                 $table=$this->tipoMascota;
  5.                 $sql="INSERT INTO usuarios (correo, password)
  6.                 VALUES ($this->correo,$this->password);";
  7.                 $result=$this->bd->executeSQL($sql);
  8.                 $id = mysqli_insert_id();
  9.                 $sql="INSERT INTO mascotas (id_usuario,foto,nombreMascota,descripcion,edadMascota) VALUES (".$id.",$this->nomMasc,$this->edadMasc,$this->fotografia,$this->descripcion)";
  10.                 $result=$this->bd->executeSQL($sql);
  11.                 $id = mysqli_insert_id();
  12.                 $sql="INSERT INTO ".$table." (id_usuario) VALUES (".$id.")";                                     
  13.                 $result=$this->bd->executeSQL($sql);
  14.         }

ahora al ejecutarlo me arroja el siguiente warning
Código MySQL:
Ver original
  1. Warning: mysqli_insert_id() expects exactly 1 parameter, 0 given in C:\wamp\www\ontamimascotalandig\class\class.mascota.php on line 47

y por el momento la única sentencia que se realiza correctamente es el primero.

de antemano muchísimas gracias por la ayuda.
  #4 (permalink)  
Antiguo 24/03/2016, 12:04
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Insertar y recuperar id para nueva inserción [PROBLEMA]

Lee el manual. La función mysqli_insert_id () requiere la conexión como parámetro.
No te olvides de que cambiar de librería no es sólo cambiar de prefijo en los nombres de las funciones. Cambian los parámetros que estas usan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 24/03/2016, 17:24
Avatar de FkFrank  
Fecha de Ingreso: marzo-2016
Mensajes: 5
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Insertar y recuperar id para nueva inserción [PROBLEMA]

Si tengo en cuenta que no solo es cambiar prefijos, después de tomarme un rato para pensar y analizar mi código logre solucionarlo, de todas formas gracias.

Etiquetas: funcion, mysql, pdo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:21.