ERROR AL HACER UN INSERT CON LOS DATOS SACADOS DE UN SELECT
Publicado por Sergio (7 intervenciones) el 20/04/2019 15:19:35
Hola,
Soy principiante en esto y tengo que elaborar un programa en el que trayéndome datos personales de una tabla, los pueda insertar en otra.
El proceso es el siguiente: de una tabla de usuarios con los siguientes atributos:(din, nombre, apellidos, teléfono, correo, ubicación) selecciono mediante CheckBox los usuarios cogiéndoles el dni, y lo que quiero es que haciendo un select con el dni que he obtenido de cada usuario, sacar los valores de cada campo e insertarlos en otra tabla.
Al hacerlo me da el siguiente error: Recoverable fatal error: Object of class PDOStatement could not be converted to string, y es que no se que hacer para poder introducir esos valores en la tabla que yo quiero.
Dejo el código por aquí por si alguien me puede ayudar:
<?php
require_once "biblioteca.php";
cabecera ("Borrar 2", MENU_VOLVERCONVOCATORIA);
$id = recogeMatriz("id"); //AQUI RECOGO TODOS LOS DNI QUE SELECCIONO ANTERIORMENTE
$partido = recoge("menu"); //AQUI RECOJO LA TABLA DONDE QUIERO INSERTAR LOS DATOS
$db = conectaDb();
$ok = false;
if (count($id) == 0) {
print " <p>No se ha seleccionado ningún registro.</p>\n";
} else {
foreach ($id as $indice => $valor) {
try {
$conn = new PDO("mysql:host=$servidor;dbname=$dbDb", MYSQL_USER, MYSQL_PASSWORD);
} catch (PDOException $error) {
echo 'Connection error: ' . $error->getMessage();
}
$nombre = $conn->prepare("SELECT nombre FROM $dbTabla WHERE $indice LIKE :$indice");
$apellidos = $conn->prepare("SELECT apellidos FROM $dbTabla WHERE $indice LIKE :$indice");
$telefono = $conn->prepare("SELECT telefono FROM $dbTabla WHERE $indice LIKE :$indice");
$correo = $conn->prepare("SELECT correo FROM $dbTabla WHERE $indice LIKE :$indice");
$ubicacion = $conn->prepare("SELECT ubicacion FROM $dbTabla WHERE $indice LIKE :$indice");//->fetchColumn()
$consulta = $conn->prepare("INSERT INTO $partido (dni, nombre, apellidos, telefono, correo, ubicacion)
VALUES ('$indice',$nombre,'$apellidos','$telefono','$correo','$ubicacion')");
if ($consulta->execute()) {
$ok=true;
}
}
if($ok){
print " <p class=\"p2\">Empleados registrados correctamente.</p>\n";
}else{
print " <p class=\"p2\">Empleados no registrados, compruebe si ya los registró anteriormente</p>\n";
}
$conn = null;
}
Soy principiante en esto y tengo que elaborar un programa en el que trayéndome datos personales de una tabla, los pueda insertar en otra.
El proceso es el siguiente: de una tabla de usuarios con los siguientes atributos:(din, nombre, apellidos, teléfono, correo, ubicación) selecciono mediante CheckBox los usuarios cogiéndoles el dni, y lo que quiero es que haciendo un select con el dni que he obtenido de cada usuario, sacar los valores de cada campo e insertarlos en otra tabla.
Al hacerlo me da el siguiente error: Recoverable fatal error: Object of class PDOStatement could not be converted to string, y es que no se que hacer para poder introducir esos valores en la tabla que yo quiero.
Dejo el código por aquí por si alguien me puede ayudar:
<?php
require_once "biblioteca.php";
cabecera ("Borrar 2", MENU_VOLVERCONVOCATORIA);
$id = recogeMatriz("id"); //AQUI RECOGO TODOS LOS DNI QUE SELECCIONO ANTERIORMENTE
$partido = recoge("menu"); //AQUI RECOJO LA TABLA DONDE QUIERO INSERTAR LOS DATOS
$db = conectaDb();
$ok = false;
if (count($id) == 0) {
print " <p>No se ha seleccionado ningún registro.</p>\n";
} else {
foreach ($id as $indice => $valor) {
try {
$conn = new PDO("mysql:host=$servidor;dbname=$dbDb", MYSQL_USER, MYSQL_PASSWORD);
} catch (PDOException $error) {
echo 'Connection error: ' . $error->getMessage();
}
$nombre = $conn->prepare("SELECT nombre FROM $dbTabla WHERE $indice LIKE :$indice");
$apellidos = $conn->prepare("SELECT apellidos FROM $dbTabla WHERE $indice LIKE :$indice");
$telefono = $conn->prepare("SELECT telefono FROM $dbTabla WHERE $indice LIKE :$indice");
$correo = $conn->prepare("SELECT correo FROM $dbTabla WHERE $indice LIKE :$indice");
$ubicacion = $conn->prepare("SELECT ubicacion FROM $dbTabla WHERE $indice LIKE :$indice");//->fetchColumn()
$consulta = $conn->prepare("INSERT INTO $partido (dni, nombre, apellidos, telefono, correo, ubicacion)
VALUES ('$indice',$nombre,'$apellidos','$telefono','$correo','$ubicacion')");
if ($consulta->execute()) {
$ok=true;
}
}
if($ok){
print " <p class=\"p2\">Empleados registrados correctamente.</p>\n";
}else{
print " <p class=\"p2\">Empleados no registrados, compruebe si ya los registró anteriormente</p>\n";
}
$conn = null;
}
Valora esta pregunta
0