New question

Question:

Date: 01-02-2015 01:36:34 (In Spanish)

PHP-MySQL: Tengo una consulta que me devuelve un resultado con 3 registros, ¿Cómo puedo hacer un INSERT de ellos en otra tabla?[Resolved]

PHP- MySQL (Ejemplo básico)
supongamos que hago una consulta
$sql="SELECT nombre, ciudad FROM proveedores  WHERE ciudad = 'Buenos Aires ";
$consulta=mysql_query($sql,$conexion);
$sql=mysql_num_rows($consulta);


El resultado es:

Nombre - Ciudad
Pepe - Buenos Aires
Tito - Buenos Aires
Tato - Buenos Aires
Ahora lo que quiero hacer es un INSERT de todos estos registros en otra TABLA que se llama xx
Tags: Deprecated features - MySQL - MySQL Developing - PHP - Query - Question - SQL Votes: 1 - Answers: 5 - Views: 24 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 01-02-2015 04:28:41 Hola Daniel,
    Te desaconsejo el uso de las funciones de la API MySQL que estás utilizando pues ya es obsoleta y no tendrá soporte en futuras versiones.
    Checa las funciones de la API MySQLi que son las recomendadas aunque como bien se mencionaba antes, si quieres una aplicación verdaderamente portátil utiliza PDO o un ORM pero con PDO estarás más que bien.

    Para tu pregunta puedes utilizar una sentencia INSERT INTO SELECT.
    Algo así:

    INSERT INTO xx (nombre,ciudad) SELECT nombre, ciudad FROM proveedores WHERE ciudad = 'Buenos Aires';
    
      Votes: 3 - Link answer
     
  • Date: 01-02-2015 09:33:43 Ante todo, gracias Ernesto por tu respuesta.
    Lo que pretendo no es hacer esto,
    INSERT INTO xx (nombre,ciudad) SELECT nombre, ciudad FROM proveedores WHERE ciudad = 'Buenos Aires';

    sino algo asi como esto:
    INSERT INTO xx (nombre [' '],ciudad [' ']) SELECT nombre, ciudad FROM proveedores WHERE ciudad = 'Buenos Aires';

    Es decir hacer un input de un array ... (Tal vez no me explique bien) ...
      Votes: 0 - Link answer
     
  • Date: 02-02-2015 10:25:36 Daniel, si te explicaste bien lo que quieres hacer es:
    1. Obtener la lista de nombre, ciudad.
    2. Almacenar los resultados en un arreglo.
    3. Almacenar esos resultados en otra tabla.

    Lo que yo haría es usar sentencias preparadas. No lo pongo utilizando la API de MySQL por las razones antes expuestas y sería algo así (ejemplo NO probado pero te debe dar una idea):

    //Creamos el objeto de conexión
    $mysqliObj = new mysqli($dbHost, $dbUser, $dbPass, $dbName);
    //Declaramos las variables a utilizar
    $name = NULL;
    $city = NULL;
    $resultsArray = array();
    //Ejecutamos la consulta y obtenemos los registros
    $query = 'SELECT nombre, ciudad FROM proveedores WHERE ciudad = \'Buenos Aires\'';
    if($stmt = $mysqliObj->prepare($query)){
        $stmt->execute();
        $stmt->bind_result($name, $city);
        while($stmt->fetch()){
            $resultsArray[] = array('name'=>$name,'city'=>$city);
        }
        //Cerramos la sentencia
        $stmt->close();
        //Procedemos a insertar en la otra tabla
        $insertQuery = 'INSERT INTO xx (nombre,ciudad) VALUES (?, ?)';
        $insertStmt = $mysqli->prepare($insertQuery);
        //Preparamos las variables a ocupar así como la sentencia de inserción
        $insertName = NULL;
        $insertCity = NULL;
        $insertStmt->bind_param('ss', $insertName, $insertCity);
        //Iteramos el arreglo de resultados para insertar
        foreach($resultsArray as $resultLine){
            $insertName = $resultLine['name'];
            $insertCity = $resultLine['city'];
            //Ejecutamos la sentencia de inserción
            $insertStmt->execute();
        }
        //Cerramos la sentencia
        $insertStmt->close();
    }
    //Está de más pues al finalizar el script se libera el recurso, se puede omitir
    $mysqli->close();
    


    Es un ejemplo no probado, tal vez haya que ajustar algunas cosas.
    Aún así si no vas a ocupar el arreglo de resultados para algo más creo que es mejor utilizar la sentencia INSERT INTO SELECT.
      Votes: 2 - Link answer
     
  • Date: 03-02-2015 07:09:04 has un printf con parametros como los arrays que quieres meter y listo.   Votes: 0 - Link answer
     
  • Date: 06-02-2015 07:55:57 le doy una pista busca sobre into select   Votes: -1 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com