我是数据库的初学者,我一直在尝试将数据从一个表插入到另一个表中。 我有以下代码:
$codigoAlumno = $_GET['txtValidarCodigo'];
$codigoMateria = $_GET['txtValidarMateria'];
if($codigoAlumno && $codigoMateria){
include('conexion.php');
//GUARDAR COINCIDENCIA CON CODIGOS
$query = mysql_query("SELECT * FROM cat_materia WHERE vchCodigoMateria='$codigoMateria'");
$rowStn = mysql_num_rows($query);
$query_2 = mysql_query("SELECT * FROM cat_alumno WHERE iCodigoAlumno='$codigoAlumno'");
$rowSub=mysql_num_rows($query_2);
if($rowSub == 0){
echo "No coicide con ningun registro";
}else{
if($rowStn == 0){
echo "No coicide con ningun registro";
}else{
//AGREGAR DATOS
mysql_query("INSERT INTO cat_rel_alumno_materia(iCodigoAlumno,vchCodigoMateria,fCalificacion)VALUES('$codigoAlumno','$codigoMateria'");
$registro = mysql_affected_rows();
echo 'Se ha completado el regisitro '.$registro;
}
}
}else{
echo "Ingrese los campos";
}
真的,我搜索的方式不同,但没有任何效果。
答案 0 :(得分:1)
使用PHP执行两个单独的查询并将结果逐行插入数据库并不是非常有效,而且需要付出很多努力。您可以改为使用INSERT SELECT syntax
使用INSERT ... SELECT,您可以从一个或多个表中快速地将多行插入表中。
因此,您的大部分代码都可以替换为:
INSERT INTO cat_rel_alumno_materia(iCodigoAlumno,vchCodigoMateria,fCalificacion)
SELECT col1, col2, col3 FROM cat_alumno
注意适当更换col1,col2,col3。如果你想从cat_alumno和cat_materia
组合 你可以做到INSERT INTO cat_rel_alumno_materia(iCodigoAlumno,vchCodigoMateria,fCalificacion)
SELECT c1.col1, c2.col2, c2.col3 FROM cat_alumno c1 INNER JOIN cat_materia c2 ON iCodigoAlumno = vchCodigoMateria
注意:由于您没有提到表格的内容,因此上述查询仅作为一般准则提供。它不会按原样运行,你必须对表格结构进行微调。
答案 1 :(得分:0)
如果您尝试将数据从一个表插入另一个表,则可以使用INSERT INTO SELECT
语句。
示例:
INSERT INTO table_1(col_1, col_2)
SELECT col_1, col_2 FROM table_2