2014-04-18 2 views
1

하나의 제출 버튼으로 여러 개의 MySQL 행을 업데이트하고 싶습니다. 하지만 내 PHP 코드에 문제가있는 것 같습니다.MYSQL- 하나의 제출 버튼으로 여러 행 업데이트

<?php 
define('DB_SERVER', 'localhost'); 
define('DB_USERNAME', 'webtest'); 
define('DB_PASSWORD', '******'); 
define('DB_DATABASE', 'webtest'); 

$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error()); 
$database = mysql_select_db(DB_DATABASE) or die(mysql_error()); 
mysql_set_charset("utf8", $connection); 
?> 

    <form action='' method='post'> 
    <table border='1'> 
     <?php 
      $result = mysql_query("SELECT * FROM users "); 

        echo "<tr>"; 
         echo "<td colspan='3'>CLASS 1</td>"; 
        echo "</tr>"; 

        while($row = mysql_fetch_array($result)){ 

        echo "<tr>"; 
         echo "<td><input type='text' name='id' value='".$row['id']."' /></td>"; 
         echo "<td>Email :<input type='text' name='email' value='".$row['email']."' /></td>"; 
         echo "<td>Username :<input type='text' name='username' value='".$row['username']."' /></td>"; 
         echo "<td>Password :<input type='text' name='password' value='".$row['password']."' /></td>"; 
        echo "</tr>"; 

      } 

      echo "<input type='submit' name='update' value='UPDATE' />"; 
     ?> 
    <table> 
</form> 

<?php 
    $id = $_POST['id']; 
    $update = $_POST['update']; 
    $email = $_POST['email']; 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

if(isset($_POST['update'])){ 

foreach($_POST['email'] as $email){ 


    mysql_query(" UPDATE users 
         SET email= '$email', username='$username', password='$password' 
        WHERE id = '$id' "); 

} 
    header("location: updateusers.php"); 
    exit; 
} 

?> 
+0

당신이 직면하고있는 오류가 무엇입니까로 교체? 제발 정교한 수 있습니까? – abmussani

+0

그건 정말 좋은 [** 주사 **] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) 거기에가 ... –

+0

mysql_query는 이제 감가 상각되었습니다. 대체 방법은 여기를보십시오. http://www.php.net/mysql_query. – dave

답변

0

$_POST['email']은 배열이 아닙니다. 그것을 반복 할 수 없습니다. 전자 메일의 입력 태그를 배열로 선언해야 foreach에서 사용할 수 있습니다.

echo "<td>Email :<input type='text' name='email' value='".$row['email']."' /></td>"; 

echo "<td>Email :<input type='text' name='email[]' value='".$row['email']."' /></td>"; 
+0

많이 고마워요, 그러나 다른 문제가있는 것 같습니다. 이것은 모든 행에 영향을 미치지 않는 마지막 행만 ipdates합니다. – user3549878

관련 문제