2013-08-04 11 views
0

안녕하세요 사용자가 데이터베이스에 여러 항목을 선택하거나 추가 할 수있는 PHP 스크립트를 만들었습니다 예를 들어 사용자가 한 번에 10 개 항목을 추가 할 수 있지만 주요 문제는 마지막 하나는 데이터베이스에 추가하고 모든 데이터를 여러 항목으로하고 여기에 코드와 이름이여러 데이터 가져 오기 및 그들을 여러 데이터베이스 항목에 추가

 <?php 
     if(isset($_POST['multi'])){ 
     echo "<form action='final.php' method='POST'>"; 
     $a = $_POST['number']; 
     $b = 0 ; 
     $c = $_POST['country']; 
     $d = $_POST['state']; 
     echo"<table border='1'><tr><td colspan='7'>Country:<input type='text' 
     name='country' value='$c'></td></tr>"; 
     while($a != $b){ 
     $b++; 
     echo " 
     <tr> 
    <td>State</td> 
<td>Name</td> 
    <td>Main Information</td> 
    <td>Second Information</td> 
     </tr> 
     <tr> 
    <td><input type='text' name='state".$b."' value='$d'></td> 
    <td><textarea name='name".$b."'></textarea></td> 
    <td><textarea name='info1".$b."'></textarea></td> 
    <td><textarea name='info2".$b."'></textarea></td> 
     </tr> 
     "; 

     }; 
     echo "</table></br>Total:<input type='text' name='total' value='$a'>"; 
     echo"<input type='submit' name='Add' value='Add'></form>"; 

     } 

     elseif(isset($_POST['Add'])){ 
      $a1 = $_POST['total']; 
      $b1 = 0; 
      $c1 = $_POST['country']; 
      echo "There is $a1 types in here"; 

      $cn = mysql_connect("127.0.0.1","root",""); 
      if(!$cn) 
      { 
      die('Could not connect:'.mysql_error()); 
      } 
      mysql_select_db("test",$cn); 


      while($a1 != $b1){ 
       $b1++;   
       $state = "state".$b1; 
       $name = "name".$b1; 
       $info1 = "info1".$b1; 
       $info2 = "info2".$b1; 

       $sq="INSERT INTO ftable(Country, State, Name, First, Second) VALUE('$c1', '$_POST[$state]', '$_POST[$name]', '$_POST[$info1]', '$_POST[$info2]')"; 

       echo "</br>Country:$c1</br> 
        State:".$_POST[$state]."</br> 
        Name:".$_POST[$name]."</br> 
        Info1:".$_POST[$info1]."</br> 
        Info2:".$_POST[$info2]."</br>"; 
      } 


      if (!mysql_query($sq,$cn)) 
      { 
      die('Error:'.mysql_error()); 
      } 
      echo"<palign='center'>You have added $a to the dbms</br>"; 




     } 

     else{ 
     echo"<form action='final.php' method='POST'> 
     <input type='number' name='number'> 
     <input type='text' name='country' value='country'> 
     <input type='submit' value='Generate' name='multi'> 
     </form>"; 
     } 

     ?> 

덕분 final.php이다 것을 누군가가 나를 도울 수 있다면, 그것을 감사 정말 것이다 이걸로 그리고 멍청한 코딩에 멍청한 녀석

답변

1

이것은외부에서 쿼리를 실행하기 때문입니다.루프. 해결 방법은 while 루프 내에서 mysql_query($sq, $cn)을 이동하는 것입니다. 또한 삽입 검색어에 VALUES 대신 VALUE이있는 경우 insert syntax을 참조하십시오. 코드가 SQL 인젝션에 취약

 while($a1 != $b1){ 
      $b1++;   
      $state = "state".$b1; 
      $name = "name".$b1; 
      $info1 = "info1".$b1; 
      $info2 = "info2".$b1; 

      $sq="INSERT INTO ftable(Country, State, Name, First, Second) VALUES('$c1', '$_POST[$state]', '$_POST[$name]', '$_POST[$info1]', '$_POST[$info2]')"; 

      echo "</br>Country:$c1</br> 
       State:".$_POST[$state]."</br> 
       Name:".$_POST[$name]."</br> 
       Info1:".$_POST[$info1]."</br> 
       Info2:".$_POST[$info2]."</br>"; 

      if (!mysql_query($sq,$cn)) 
      { 
      die('Error:'.mysql_error()); 
      } 
      echo"<palign='center'>You have added $a to the dbms</br>"; 
     } 

참고, 당신이 좋아하는 mysql_real_escape_string를 사용하여 조사해야 다음과

$a = mysql_real_escape_string($_POST['number']); 
    $c = mysql_real_escape_string($_POST['country']); 
    $d = mysql_real_escape_string($_POST['state']); 

은 또한 당신이 mysqli 또는 PDO 하나에 보일 것입니다, 그래서 mysql_ 확장이되지 않습니다 있습니다.

+0

죄송합니다. 이미 while 루프 기능 안에 있습니다. – user1868185

+0

@ user1868185, 그 경우에는 내 대답을 업데이트했습니다. mysql 구문이 올바르지 않아, 당신이'VALUES' 대신'VALUE'을 사용하고있었습니다. 업데이트 된 코드를 사용해보십시오. – vee

+0

그 중 하나에 대한 감사와 나는 또한 함수에 대한 포함을 사용하여 이것에 대해 뭔가를했습니다. 그리고 이것 역시 당신이 한 것처럼 잘 작동했습니다. 그리고 다시 감사드립니다! – user1868185