Php 如何将多个插入合并到数据库中?

Php 如何将多个插入合并到数据库中?,php,mysql,sql,Php,Mysql,Sql,我的提交表单工作正常,但代码中有3个插入查询 让我解释一下原因 “插入查询1”允许将窗体上下拉菜单的选定值插入到数据库表中 插入查询2允许将文本区域框内的值插入到单独的行中 插入查询3允许插入所有其他数据 HTML看起来是这样的(它被包装在一段代码中,但我将只包含几个片段) 下拉菜单: <select name="Name" id=""> <?php while ($row = mysql_fetch_array($result)) { ?> <op

我的提交表单工作正常,但代码中有3个插入查询

让我解释一下原因

“插入查询1”允许将窗体上下拉菜单的选定值插入到数据库表中

插入查询2允许将文本区域框内的值插入到单独的行中

插入查询3允许插入所有其他数据

HTML看起来是这样的(它被包装在一段代码中,但我将只包含几个片段)

下拉菜单:

  <select name="Name" id="">
  <?php
  while ($row = mysql_fetch_array($result)) {
  ?>
<option value="<?php echo $row['Name']; ?>"><?php echo $row['Name']; ?>     </option>
  <?php
} ?>
</select>
插入选定的下拉菜单值:

 //if (isset ($_POST['upload']))
//{
$Name=trim($_POST['Name']);
$ins=mysql_query("INSERT INTO Colleges (Name) VALUES ('$Name')") or die(mysql_error()) ;
if($ins)
{
echo "<br>".$Name."inserted";
}
else
{
echo mysql_error();
}
//}
插入数据库时,将显示多行数据。
1行=学院名称(从下拉菜单中)
第二行=距离文本区域的度数
第三行=所有其他数据


如何将所有insert查询合并到一个查询中,以便只有一行?

您可以使用多个查询将多个sql查询合并到一个查询中

多查询示例

$mysqli = new mysqli("example.com", "user", "password", "database");
$sql = "INSERT INTO table VALUES ('My First Table'); ";
$sql.= "INSERT INTO table VALUES ('My Second Table'); ";
$mysqli->multi_query($sql);

通常,您只构建一个查询

获取每个值并将它们添加到查询中(可能作为参数)

但是,您似乎只有一个表,而不是多个表。您可能希望有一个学院表,然后是另一个表,每个学院都有一行课程

另一种方法是,您的第一个查询返回插入行的唯一id,然后所有其他插入也使用ON DUPLICATE KEY UPDATE子句插入此id。但这将是混乱和缓慢的

编辑

单个查询的示例请注意,我刚刚使用了不推荐使用的mysql_*函数,因为您正在使用这些函数,但您应该切换到mysqli_*函数或PDO。无论是转义数据还是使用参数化查询,这两种方法都非常重要

这将为学院插入一条记录,然后使用mysql_insert_id()获取插入字段的id字段(假设您有一条)。然后使用此id将每个课程插入到另一个表中,该表列出了每个学院的课程:-

<?php

$Name = mysql_real_escape_string(trim($_POST['Name']));
$schoollogo = mysql_real_escape_string(trim($_POST['schoollogo']));
$Motto = mysql_real_escape_string(trim($_POST['Motto'])); 
$Description = mysql_real_escape_string(trim($_POST['Description'])); 
$Type = mysql_real_escape_string(trim($_POST['Type'])); 
$ReligiousAffiliation = mysql_real_escape_string(trim($_POST['ReligiousAffiliation']));
$OtherPartnerships = mysql_real_escape_string(trim($_POST['OtherPartnerships'])); 
$GenderAdmission = mysql_real_escape_string(trim($_POST['GenderAdmission'])); 
$TermType = mysql_real_escape_string(trim($_POST['TermType']));
$EntranceExam = mysql_real_escape_string(trim($_POST['EntranceExam']));
$EntranceExamDate = mysql_real_escape_string(trim($_POST['EntranceExamDate']));
$TotalEnrolled = mysql_real_escape_string(trim($_POST['TotalEnrolled'])); 
$collegewebsite = mysql_real_escape_string(trim($_POST['collegewebsite'])); 
$ContactInfo = mysql_real_escape_string(trim($_POST['ContactInfo', 
$CampusLocations = mysql_real_escape_string(trim($_POST['CampusLocations'])); 
$Certifications = mysql_real_escape_string(trim($_POST['Certifications'])); 
$Diplomas = mysql_real_escape_string(trim($_POST['Diplomas'])); 
$AssociateDegrees = mysql_real_escape_string(trim($_POST['AssociateDegrees'])); 
$MastersDegrees = mysql_real_escape_string(trim($_POST['MastersDegrees'])); 
$DoctorateDegrees = mysql_real_escape_string(trim($_POST['DoctorateDegrees']));
$SpecialDegreePrograms = mysql_real_escape_string(trim($_POST['SpecialDegreePrograms']));
$Accreditation = mysql_real_escape_string(trim($_POST['Accreditation']));
$CostofTuitionLocal = mysql_real_escape_string(trim($_POST['CostofTuitionLocal']));
$CostofTuitionForeign = mysql_real_escape_string(trim($_POST['CostofTuitionForeign']));
$Housing = mysql_real_escape_string(trim($_POST['Housing']));
$AcceptanceRate = mysql_real_escape_string(trim($_POST['AcceptanceRate']));
$CoE = mysql_real_escape_string(trim($_POST['CoE']));
$CoD = mysql_real_escape_string(trim($_POST['CoD']));

$ins = mysql_query("INSERT INTO Colleges (Name, schoollogo, Motto, Description,Type, ReligiousAffiliation, OtherPartnerships, GenderAdmission, TermType, EntranceExam, EntranceExamDate, TotalEnrolled, collegewebsite, ContactInfo, CampusLocations, Certifications, Diplomas, AssociateDegrees, MastersDegrees, DoctorateDegrees, SpecialDegreePrograms, Accreditation, CostofTuitionLocal, CostofTuitionForeign, Housing,AcceptanceRate, CoE, CoD) 
                    VALUES ('$Name', 
                    '$schoollogo', 
                    '$Motto', 
                    '$Description', 
                    '$Type', 
                    '$ReligiousAffiliation', 
                    '$OtherPartnerships', 
                    '$GenderAdmission', 
                    '$TermType', 
                    '$EntranceExam', 
                    '$EntranceExamDate', 
                    '$TotalEnrolled', 
                    '$collegewebsite', 
                    '$ContactInfo', 
                    '$CampusLocations', 
                    '$Certifications', 
                    '$Diplomas', 
                    '$AssociateDegrees', 
                    '$MastersDegrees', 
                    '$DoctorateDegrees',
                    '$SpecialDegreePrograms',
                    '$Accreditation',
                    '$CostofTuitionLocal',
                    '$CostofTuitionForeign',
                    '$Housing',
                    '$AcceptanceRate',
                    '$CoE',
                    '$CoD')") or die(mysql_error()) ;
if($ins)
{
    echo "<br>".$Name."inserted";
    $CollegeId = mysql_insert_id();

    $text = trim($_POST['BachelorsDegrees']);
    $textAr = explode("\n", $text);

    foreach ($textAr as $BachelorsDegrees) 
    {
        mysql_query("INSERT INTO Colleges_Courses (CollegeId, BachelorsDegrees) 
                    VALUES (".(int)$CollegeId.", '".mysql_real_escape_string(trim($BachelorsDegrees))."')") or die(mysql_error()) ;
    }
}
else
{
    echo mysql_error();
}

那么您只想在数据库中创建一行?是什么阻止你在最后一个查询中添加'Name'和'BachlorsDegrees'并删除另外两个INSERT查询?@kyeiti-我已经尝试过了。不起作用。我必须将两个查询中的结束括号移到最后一个查询之后,但是当我提交表单时,没有插入任何内容。我如何将其应用到我当前的代码中?
 mysql_query("INSERT INTO Colleges (schoollogo,Motto,Description,Type,ReligiousAffiliation,OtherPartnerships,GenderAdmission,TermType,EntranceExam,EntranceExamDate,TotalEnrolled,collegewebsite,ContactInfo,CampusLocations,Certifications,Diplomas,AssociateDegrees,MastersDegrees,DoctorateDegrees,SpecialDegreePrograms,Accreditation,CostofTuitionLocal,CostofTuitionForeign,Housing,AcceptanceRate,CoE,CoD) VALUES ('$schoollogo', '$Motto', '$Description', '$Type', '$ReligiousAffiliation', '$OtherPartnerships', '$GenderAdmission', '$TermType', '$EntranceExam', '$EntranceExamDate', '$TotalEnrolled', '$collegewebsite', '$ContactInfo', '$CampusLocations', '$Certifications', '$Diplomas', '$AssociateDegrees', '$MastersDegrees', '$DoctorateDegrees','$SpecialDegreePrograms','$Accreditation','$CostofTuitionLocal','$CostofTuitionForeign','$Housing','$AcceptanceRate','$CoE','$CoD')") or die(mysql_error()) ;
$mysqli = new mysqli("example.com", "user", "password", "database");
$sql = "INSERT INTO table VALUES ('My First Table'); ";
$sql.= "INSERT INTO table VALUES ('My Second Table'); ";
$mysqli->multi_query($sql);
<?php

$Name = mysql_real_escape_string(trim($_POST['Name']));
$schoollogo = mysql_real_escape_string(trim($_POST['schoollogo']));
$Motto = mysql_real_escape_string(trim($_POST['Motto'])); 
$Description = mysql_real_escape_string(trim($_POST['Description'])); 
$Type = mysql_real_escape_string(trim($_POST['Type'])); 
$ReligiousAffiliation = mysql_real_escape_string(trim($_POST['ReligiousAffiliation']));
$OtherPartnerships = mysql_real_escape_string(trim($_POST['OtherPartnerships'])); 
$GenderAdmission = mysql_real_escape_string(trim($_POST['GenderAdmission'])); 
$TermType = mysql_real_escape_string(trim($_POST['TermType']));
$EntranceExam = mysql_real_escape_string(trim($_POST['EntranceExam']));
$EntranceExamDate = mysql_real_escape_string(trim($_POST['EntranceExamDate']));
$TotalEnrolled = mysql_real_escape_string(trim($_POST['TotalEnrolled'])); 
$collegewebsite = mysql_real_escape_string(trim($_POST['collegewebsite'])); 
$ContactInfo = mysql_real_escape_string(trim($_POST['ContactInfo', 
$CampusLocations = mysql_real_escape_string(trim($_POST['CampusLocations'])); 
$Certifications = mysql_real_escape_string(trim($_POST['Certifications'])); 
$Diplomas = mysql_real_escape_string(trim($_POST['Diplomas'])); 
$AssociateDegrees = mysql_real_escape_string(trim($_POST['AssociateDegrees'])); 
$MastersDegrees = mysql_real_escape_string(trim($_POST['MastersDegrees'])); 
$DoctorateDegrees = mysql_real_escape_string(trim($_POST['DoctorateDegrees']));
$SpecialDegreePrograms = mysql_real_escape_string(trim($_POST['SpecialDegreePrograms']));
$Accreditation = mysql_real_escape_string(trim($_POST['Accreditation']));
$CostofTuitionLocal = mysql_real_escape_string(trim($_POST['CostofTuitionLocal']));
$CostofTuitionForeign = mysql_real_escape_string(trim($_POST['CostofTuitionForeign']));
$Housing = mysql_real_escape_string(trim($_POST['Housing']));
$AcceptanceRate = mysql_real_escape_string(trim($_POST['AcceptanceRate']));
$CoE = mysql_real_escape_string(trim($_POST['CoE']));
$CoD = mysql_real_escape_string(trim($_POST['CoD']));

$ins = mysql_query("INSERT INTO Colleges (Name, schoollogo, Motto, Description,Type, ReligiousAffiliation, OtherPartnerships, GenderAdmission, TermType, EntranceExam, EntranceExamDate, TotalEnrolled, collegewebsite, ContactInfo, CampusLocations, Certifications, Diplomas, AssociateDegrees, MastersDegrees, DoctorateDegrees, SpecialDegreePrograms, Accreditation, CostofTuitionLocal, CostofTuitionForeign, Housing,AcceptanceRate, CoE, CoD) 
                    VALUES ('$Name', 
                    '$schoollogo', 
                    '$Motto', 
                    '$Description', 
                    '$Type', 
                    '$ReligiousAffiliation', 
                    '$OtherPartnerships', 
                    '$GenderAdmission', 
                    '$TermType', 
                    '$EntranceExam', 
                    '$EntranceExamDate', 
                    '$TotalEnrolled', 
                    '$collegewebsite', 
                    '$ContactInfo', 
                    '$CampusLocations', 
                    '$Certifications', 
                    '$Diplomas', 
                    '$AssociateDegrees', 
                    '$MastersDegrees', 
                    '$DoctorateDegrees',
                    '$SpecialDegreePrograms',
                    '$Accreditation',
                    '$CostofTuitionLocal',
                    '$CostofTuitionForeign',
                    '$Housing',
                    '$AcceptanceRate',
                    '$CoE',
                    '$CoD')") or die(mysql_error()) ;
if($ins)
{
    echo "<br>".$Name."inserted";
    $CollegeId = mysql_insert_id();

    $text = trim($_POST['BachelorsDegrees']);
    $textAr = explode("\n", $text);

    foreach ($textAr as $BachelorsDegrees) 
    {
        mysql_query("INSERT INTO Colleges_Courses (CollegeId, BachelorsDegrees) 
                    VALUES (".(int)$CollegeId.", '".mysql_real_escape_string(trim($BachelorsDegrees))."')") or die(mysql_error()) ;
    }
}
else
{
    echo mysql_error();
}
<?php

$Name = mysql_real_escape_string(trim($_POST['Name']));
$schoollogo = mysql_real_escape_string(trim($_POST['schoollogo']));
$Motto = mysql_real_escape_string(trim($_POST['Motto'])); 
$Description = mysql_real_escape_string(trim($_POST['Description'])); 
$Type = mysql_real_escape_string(trim($_POST['Type'])); 
$ReligiousAffiliation = mysql_real_escape_string(trim($_POST['ReligiousAffiliation']));
$OtherPartnerships = mysql_real_escape_string(trim($_POST['OtherPartnerships'])); 
$GenderAdmission = mysql_real_escape_string(trim($_POST['GenderAdmission'])); 
$TermType = mysql_real_escape_string(trim($_POST['TermType']));
$EntranceExam = mysql_real_escape_string(trim($_POST['EntranceExam']));
$EntranceExamDate = mysql_real_escape_string(trim($_POST['EntranceExamDate']));
$TotalEnrolled = mysql_real_escape_string(trim($_POST['TotalEnrolled'])); 
$collegewebsite = mysql_real_escape_string(trim($_POST['collegewebsite'])); 
$ContactInfo = mysql_real_escape_string(trim($_POST['ContactInfo', 
$CampusLocations = mysql_real_escape_string(trim($_POST['CampusLocations'])); 
$Certifications = mysql_real_escape_string(trim($_POST['Certifications'])); 
$Diplomas = mysql_real_escape_string(trim($_POST['Diplomas'])); 
$AssociateDegrees = mysql_real_escape_string(trim($_POST['AssociateDegrees'])); 
$MastersDegrees = mysql_real_escape_string(trim($_POST['MastersDegrees'])); 
$DoctorateDegrees = mysql_real_escape_string(trim($_POST['DoctorateDegrees']));
$SpecialDegreePrograms = mysql_real_escape_string(trim($_POST['SpecialDegreePrograms']));
$Accreditation = mysql_real_escape_string(trim($_POST['Accreditation']));
$CostofTuitionLocal = mysql_real_escape_string(trim($_POST['CostofTuitionLocal']));
$CostofTuitionForeign = mysql_real_escape_string(trim($_POST['CostofTuitionForeign']));
$Housing = mysql_real_escape_string(trim($_POST['Housing']));
$AcceptanceRate = mysql_real_escape_string(trim($_POST['AcceptanceRate']));
$CoE = mysql_real_escape_string(trim($_POST['CoE']));
$CoD = mysql_real_escape_string(trim($_POST['CoD']));

$ins = mysql_query("INSERT INTO Colleges (Id, Name) 
                    VALUES (NULL, '$Name')"; 
if($ins)
{
    echo "<br>".$Name."inserted";
    $CollegeId = mysql_insert_id();

    $ins = mysql_query("INSERT INTO Colleges (Id, schoollogo) 
                        VALUES (".(int)$CollegeId.", '$schoollogo') ON DUPLICATE KEY UPDATE schoollogo = VALUES(schoollogo)"; 
    $ins = mysql_query("INSERT INTO Colleges (Id, Motto) 
                        VALUES (".(int)$CollegeId.", '$Motto') ON DUPLICATE KEY UPDATE Motto = VALUES(Motto)"; 
    $ins = mysql_query("INSERT INTO Colleges (Id, Description) 
                        VALUES (".(int)$CollegeId.", '$Description') ON DUPLICATE KEY UPDATE Description = VALUES(Description)"; 
    $ins = mysql_query("INSERT INTO Colleges (Id, Type) 
                        VALUES (".(int)$CollegeId.", '$Type') ON DUPLICATE KEY UPDATE Type = VALUES(Type)"; 
//etc

    $text = trim($_POST['BachelorsDegrees']);
    $textAr = explode("\n", $text);

    foreach ($textAr as $BachelorsDegrees) 
    {
        mysql_query("INSERT INTO Colleges_Courses (CollegeId, BachelorsDegrees) 
                    VALUES (".(int)$CollegeId.", '".mysql_real_escape_string(trim($BachelorsDegrees))."')") or die(mysql_error()) ;
    }
}
else
{
    echo mysql_error();
}