вставка дополнительных значений сразу после успешной вставки с использованием PHP + MySQL - PullRequest
0 голосов
/ 27 февраля 2009
if(isset($_REQUEST['SAVE'])) {
    $sql = "SELECT SecName FROM section WHERE SecID='$section'";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_assoc($result)){
        $SecName = $row["SecName"];
    }
    $sql = "SELECT SubjName FROM subject WHERE SubjID='$subject'";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_assoc($result)){
        $SubjName = $row["SubjName"];
    }

    $check = mysql_query("SELECT SecID FROM service where SubjID='$SubjName'")or die(mysql_error());
    $bool = 1;
    while($info = mysql_fetch_array( $check )) 
        if(($info['SecID'] == $SecName)){
            $bool = 0;
        }
    if($bool){

        $check = mysql_query("SELECT * FROM service ")or die(mysql_error());
        $bool = 1;
        while($info = mysql_fetch_array( $check )) 
            if(($info['Start_date'] == $Start_date) && ($info['Venue'] == $Venue) || ($info['Start_date'] == $Start_date) && ($info['Facilitator'] == $Facilitator)){
                $bool = 0;
            }
        if($bool){

            $sql="INSERT INTO service ( ServiceID, Date, Semester, School_year, Start_date, Venue, Facilitator, Stype, SecID, SubjID)VALUES('$RecCode','$Date','$Semester','$School_year','$Start_date','$Venue','$Facilitator','$Stype', '$SecName', '$SubjName')";



            if (!mysql_query($sql,$con))
                {
                    die('Error: ' . mysql_error());
                }
            echo '<script type="text/javascript">';
            echo 'alert("Save Successfully!");';
            echo 'window.location="Admin_RecSchedMapLst.php";';
            echo '</script>';
            mysql_close($con);
        }else
            {       
                echo '<script type="text/javascript">';
                echo 'alert("Conflicting schedule for Venue or Facilitator!");';
                echo '</script>';
            }                       
    }else
        {   
            echo '<script type="text/javascript">';
            echo 'alert("The SECTION has been already scheduled!");';
            echo '</script>';
        }                   
}                   

/*  $result = mysql_query("SELECT SIDno FROM class WHERE SecID=$SecID AND SubjID=$SubjID");
$row = mysql_fetch_assoc($result);
$SIDno = $row['SIDno'];
$result = mysql_query("SELECT ServiceID FROM service WHERE SecID=$SecID AND SubjID=$SubjID");
$row = mysql_fetch_assoc($result);
$ServiceID = $row['ServiceID'];
$sql="INSERT INTO registered ( ServiceID, IDno, Stype )VALUES('$ServiceID','$SIDno','$Stype')"; */                          

}

этот код работает правильно. Я просто хочу спросить, как я могу работать над кодом, который прокомментирован выше. все, что я хочу сделать, это когда сервисный идентификатор вставлен, я хочу также немедленно вставить идентификатор сервиса, idno, ввести в другую зарегистрированную таблицу.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2009

Намного проще и лучше использовать функцию mysql_insert_id , чтобы получить идентификатор только что вставленной строки, а не делать еще один SELECT. E.g.:

$sql="INSERT INTO service ( ServiceID, Date, Semester, School_year, Start_date, Venue, Facilitator, Stype, SecID, SubjID) VALUES ('$RecCode','$Date','$Semester','$School_year','$Start_date','$Venue','$Facilitator','$Stype', '$SecName', '$SubjName')";

if (mysql_query($sql,$con)) {
   $ServiceID = mysql_insert_id();
   $sql="INSERT INTO registered ( ServiceID, IDno, Stype )VALUES('$ServiceID','$SIDno','$Stype')";           
   mysl_query($sql, $con);  // check for error here too though
}
else {
   echo "OH NO!!!";
}

Кроме того, остерегайтесь SQL-инъекций с тем, как вы строите свои строки SQL.

1 голос
/ 27 февраля 2009

Выполните еще одну команду SQL INSERT после первой, например:

$sql="INSERT INTO service ( ServiceID, Date, Semester, School_year, Start_date, Venue, Facilitator, Stype, SecID, SubjID) VALUES ('$RecCode','$Date','$Semester','$School_year','$Start_date','$Venue','$Facilitator','$Stype', '$SecName', '$SubjName')";

if (!mysql_query($sql,$con))
{
    die('Error: ' . mysql_error());
}
else
{
    /*Begin your SELECT and INSERT code*/
    $result = mysql_query("SELECT SIDno FROM class WHERE SecID=$SecID AND SubjID=$SubjID");
    $row = mysql_fetch_assoc($result);
    $SIDno = $row['SIDno'];
    $result = mysql_query("SELECT ServiceID FROM service WHERE SecID=$SecID AND SubjID=$SubjID");
    $row = mysql_fetch_assoc($result);
    $ServiceID = $row['ServiceID'];
    $sql2 = "INSERT INTO registered ( ServiceID, IDno, Stype )VALUES('$ServiceID','$SIDno','$Stype')";   
    /*End your SELECT and INSERT code*/                      

    if(!mysql_query($sql2,$con))
    {
        die('Error: ' . mysql_error());
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...