1. Si la tabla está en la misma base de datos
Sólo tienes que crear la otra consulta y ejecutarla, usando la misma conexión
$sql = "INSERT INTO cuestionario (r1, r2, r3, r4, r5, r6) VALUES ('$q1', '$q2', '$q3', '$q4', '$q5', '$q6')";
$rsCuestionario = $mysqli->query($sql);
/*
Esta sería la segunda consulta. Si las columnas se llaman
distinto de r1, r2 ... debes cambiar su nombre
*/
$sql = "INSERT INTO otraTabla (r1, r2, r3, r4, r5, r6) VALUES ('$q1', '$q2', '$q3', '$q4', '$q5', '$q6')";
$rsOtraTabla = $mysqli->query($sql);
Ahí tendrás dos referencias a cada ejecución que podrás usar para lo que sea necesario, como evaluar si la fila se insertó realmente, etc.
2. Si las tablas están en bases de datos distintas
Todo igual, sólo que tendrás que conectar a la otra base de datos para la otra inserción.
require 'otraconexion.php';
#Esta es la segunda inserción, la primera queda tal cual
#Suponemos que en ese archivo la conexión se llama `$mysqliOther`
$sql = "INSERT INTO otraTabla (r1, r2, r3, r4, r5, r6) VALUES ('$q1', '$q2', '$q3', '$q4', '$q5', '$q6')";
$rsOtraTabla = $mysqliOther->query($sql);
3. Un ejemplo completo controlando eventuales errores
Aquí se evalúa el estado de ambas llamadas a query
, verificando si hay error o no. Se guarda todo en una variable $arrData
que contiene dos claves, error
y msg
las cuales se usarán al final para mostrar lo que haya ocurrido.
#Ponemos claves en el array array para ir concatenando los eventuales mensajes y errores
$arrData['msg']="";
$arrData['error']="";
$sql = "INSERT INTO cuestionario (r1, r2, r3, r4, r5, r6) VALUES ('$q1', '$q2', '$q3', '$q4', '$q5', '$q6')";
$rsCuestionario = $mysqli->query($sql);
#Verificamos si hubo error en la consulta y almacenamos el error si lo hubo o la cantidad de filas insertadas
( $rsCuestionario ) ? $arrData['msg'].=sprintf("Se insertaron %d filas en cuestionario\n", $mysqli->affected_rows) : $arrData['error']=sprintf("Error en cuestionario: %s\n", $mysqli->error);
/*
Esta sería la segunda consulta. Si las columnas se llaman
distinto de r1, r2 ... debes cambiar su nombre
*/
$sql = "INSERT INTO otraTabla (r1, r2, r3, r4, r5, r6) VALUES ('$q1', '$q2', '$q3', '$q4', '$q5', '$q6')";
$rsOtraTabla = $mysqli->query($sql);
#Verificamos si hubo error en la consulta y almacenamos el error si lo hubo o la cantidad de filas insertadas
( $rsOtraTabla ) ? $arrData['msg'].=sprintf("Se insertaron %d filas en otherTable\n", $mysqli->affected_rows) : $arrData['error'].=sprintf("Error en otherTable: %s\n", $mysqli->error);
/*
MUY IMPORTANTE: Ahora hacemos una prueba sobre $arrData
que consistirá en verificar si existe una clave error en el array, imprimiendo dicho error
o los mensajes de éxito para cada consulta según el caso.
*/
$msg= (!empty($arrData['error'])) ? $arrData['error'] : $arrData['msg'];
echo $msg;
Notas
- En
mysqli
existe también una opción multiquery, pero ahora mismo no recuerdo si funciona con tablas distintas. Tampoco creo que valga la pena hacer uso de ella, pues si mal no recuerdo en algunos contextos necesita estar configurada.
- En cuanto a la seguridad, quiero señalar que tu consulta al altamente vulnerable a ataques de Inyección SQL. Un usuario mal intencionado puede manipular las variables y producir un código dañino para el sistema o para la base de datos (ver esta pregunta: ¿La Inyección SQL actúa sólo a nivel de la base de datos o el riesgo es aún mayor? para entender el nivel de gravedad que esto podría tener, aunque sean tablas de prueba). Para neutralizar ese riesgo usa consultas preparadas. Recomiendo que leas sobre el tema cuando sea posible.
ENCUESTA FINALIZADA EXITÓSAMENTE
ERROR AL GUARDAR