2014-03-04 6 views
1

안녕하세요 누군가가이 형식으로 내 SQL 데이터베이스에 행 이상을 삽입 할 수 있습니까? 나는 온라인 검색을 시도했지만 많은 솔루션은 코딩 된 정보를 가지고있다.이 양식을 사용하여 SQL에 둘 이상의 행을 넣는 방법은 무엇입니까?

나는 또한 간다 숨겨진 변수를 올리기 만하고 있기 때문에 좀 더 어려울 수 있습니다 ...

코드 :

(입력 양식) :

<?php 

$essID = $_GET['essID']; 
$sql = "SELECT * FROM ExamSubjectStudent WHERE essID = '$essID'";      
$result = mysql_query($sql); 

while ($row = mysql_fetch_array($result)) 
    { 
     $esID = $row ['esID']; 
     $sID = $row ['sID']; 
    } 

?> 

<form action="marktodatabase.php" method="post"> 

Mark:<input type="text" name="mark"><br /> 
Date:<input type="date" name="date"><br /> 
ExamSubject ID:<?php echo $esID;?> <input type="hidden" name="esID" value="<?php echo $esID; ?>" ><br /> 
Student ID:<?php echo $sID;?> <input type="hidden" name="sID" value="<?php echo $sID; ?>" ><br /> 

<input type="submit" name="submit"> 

</form> 

(SQL 입력)

<?php 
    $mark=$_POST['mark']; 
    $date=$_POST['date']; 
    $esID=$_POST['esID']; 
    $sID=$_POST['sID']; 

    $sql = mysql_query("INSERT INTO Results (mark, date, esID, sID) VALUES ('$mark', '$date', '$esID', '$sID')"); 
    $result = mysql_query($sql); 

?> 

이것은 현재 모두 작동합니다. 하지만 나는 학생을 위해 하나 이상의 표식/날짜를 넣고 싶습니다 ... 현재 개별 표식을 선택합니다. 그러나 하나 이상의 표식/날짜/esID/sID /가 표시되는 방법을 확신 할 수 없습니다. .

도움이 필요하십니까?

답변

0

먼저 입력 양식의 출력이 PHP 루프 내부에 있도록 양식을 편집해야합니다. 그러면 모든 입력에 이름에 esID와 sID가 필요하므로 나중에 식별 할 수 있습니다. 더 이상 숨겨진 입력이 필요 없습니다.

<form action="marktodatabase.php" method="post"> 
<?php 
    $essID = $_GET['essID']; 
    $sql = "SELECT * FROM ExamSubjectStudent WHERE essID = '$essID'";      
    $result = mysql_query($sql); 

    while ($row = mysql_fetch_array($result)) 
     { 
     $esID = $row['esID']; 
     $sID = $row['sID']; 

     echo "Mark: <input type=\"text\" name=\"mark_".$esID."_".$sID."\"><br />"; 
     echo "Date: <input type=\"date\" name=\"date_".$esID."_".$sID."\"><br />"; 
     echo "ExamSubject ID:".$esID."<br />"; 
     echo "Student ID: ".$sID."<br />"; 
    } 
?> 

<input type="submit" name="submit"> 
</form> 

저장하려면 이전에 선택한 모든 행을 반복하고 변경되었는지 확인한 다음 저장해야합니다. 이 오류를 포함 할 수 있도록

<?php 
$essID = $_GET['essID']; 
$sqlSelect = "SELECT * FROM ExamSubjectStudent WHERE essID = '$essID'";      
$result = mysql_query($sqlSelect); 

while ($row = mysql_fetch_array($result)) 
    { 
    $new_mark=$_POST['mark_'.$row['esId'].'_'.$row['sID']]; 
    $new_date=$_POST['date_'.$row['esId'].'_'.$row['sID']]; 
    $old_mark=$row['mark']; 
    $old_date=$row['date']; 

    if($new_mark != $old_mark || $new_date != $old_date) { 
     $sqlInsert = mysql_query("INSERT INTO Results (mark, date, esID, sID) VALUES ('".$new_mark."', '".$new_date."', '".$esID."', '".$sID."')"); 
     $result = mysql_query($sqlInsert); 
    } 
} 
?> 

는이 코드를 테스트하지 않았다,하지만 난 당신이 그것의 기본 아이디어를 얻을 귀하의 요구에 맞게 그것을 변경할 수 있기를 바랍니다.

EDIT : 또한 하나의 쿼리에 여러 행을 삽입하는 방법에 대한 Dipendu Paul의 대답을 확인하십시오. 내 스크립트와 함께 사용할 수도 있습니다.

0

단일 쿼리에서 여러 삽입의 구문은 다음과 같을 것이다 :

INSERT INTO Results (mark, date, esID, sID) VALUES ('$mark1', '$date1', '$esID1', '$sID1') 
                ,('$mark2', '$date2', '$esID2', '$sID2') 
                , ....more paranthesized comma separated values here; 

당신은 루프에서 쿼리를 구성 할 수 있습니다.

0

insert 문에있는 모든 값 집합 사이에 쉼표 (,)를 추가하여 여러 값을 넣을 수 있습니다.

다음은 예제입니다. "INSERT INTO 사용자 (이름, 성)" . "(testing, test1), (testing1, test2))"

이것에 대해서도 mysql 튜토리얼을 확인할 수 있습니다.

관련 문제