2016-07-06 67 views
0

我试图显示和更新一次所有的记录表。我可以成功显示记录。但我无法更新我的数据库,请帮我更新表中的记录。
enter image description here更新php中的多行mysql

<?php while($rows=mysqli_fetch_array($result)){ ?> 
 

 
<tr> 
 
    <td align="center"> 
 
    <input name="id[]" type="text" id="name" value="<?php echo $rows['id']; ?>"> 
 
    </td> 
 
    <td align="center"> 
 
    <input name="name[]" type="text" id="name" value="<?php echo $rows['name']; ?>"> 
 
    </td> 
 
    <td align="center"> 
 
    <input name="lastname[]" type="text" id="lastname" value="<?php echo $rows['lastname']; ?>"> 
 
    </td> 
 
    <td align="center"> 
 
    <input name="email[]" type="text" id="email" value="<?php echo $rows['email']; ?>"> 
 
    </td> 
 
</tr> 
 

 
<?php } ?> 
 

 
<tr> 
 
    <td colspan="4" align="center"> 
 
    <input type="submit" name="Submit" value="Submit"> 
 
    </td> 
 
</tr> 
 
</table> 
 
</td> 
 
</tr> 
 
</form> 
 
</table> 
 
<?php if(isset($_POST[ 'Submit'])) { $id_array=$_POST[ 'id']; $name_array=$ _POST[ 'name']; $year_array=$_POST[ 'lastname']; $emil_array=$_POST[ 'email']; for($i=0;$i<$count;$i++){ $sql1="UPDATE test_mysql SET name='$name_array[$i]', lastname='$year_array[$i]', email='$emil_array[$i]' WHERE id='id_array[$i]'" 
 
; } mysqli_close($con); } ?>

回答

0

您的形式没有一个行动处理器。

<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
0

尝试:

HTML:

<table> 
<form name="form1" method="post"> <!-- add form tag --> 

<?php while($rows=mysqli_fetch_array($result)){ ?> 

<tr> 
    <td align="center"> 
    <input name="id[]" type="text" id="name" value="<?php echo $rows['id']; ?>"> 
    </td> 
    <td align="center"> 
    <input name="name[]" type="text" id="name" value="<?php echo $rows['name']; ?>"> 
    </td> 
    <td align="center"> 
    <input name="lastname[]" type="text" id="lastname" value="<?php echo $rows['lastname']; ?>"> 
    </td> 
    <td align="center"> 
    <input name="email[]" type="text" id="email" value="<?php echo $rows['email']; ?>"> 
    </td> 
</tr> 

<?php } ?> 

<tr> 
    <td colspan="4" align="center"> 
    <input type="submit" name="Submit" value="Submit"> 
    </td> 
</tr> 
</table> 

</form> 
</table> 

PHP:

if(isset($_POST['Submit'])) { 
    $id_array=$_POST['id']; 
    $name_array=$ _POST['name']; 
    $year_array=$_POST['lastname']; 
    $emil_array=$_POST['email']; 
    for($i=0;$i<$count;$i++){ 
    $id = $name_array[$i]; 
    $name = $year_array[$i]; 
    $year = $emil_array[$i]; 
    $email = $id_array[$i]; // use $id_array[$i] to access id, as in above code you did not use $ in id_array 
    $sql="UPDATE test_mysql SET name='$name', lastname='$year', email='$email' WHERE id='$id'"; 
    if ($conn->query($sql) === TRUE) { // execute query like this 
     echo "Record updated successfully"; 
    } else { 
     echo "Error updating record: " . $conn->error; 
    } 
    } 
    $conn->close(); 
} 
+0

我想你的代码,它仍然没有更新, – Deepashika

0

在你的表格你不提任何操作处理程序。代码必须

<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
+0

现在我加动作处理,但还是其OP使用的MySQLi不工作 – Deepashika

0

希望这会帮助你,我并没有把函数mysql_escape_string因为你尚在启动,但它会帮助逃避MySQL的攻击。并且还包 窗体上<form>

if(isset($_POST['Submit'])) { 
    $id_array= $_POST['id']; 
    $name_array=$ _POST['name']; 
    $year_array=$_POST['lastname']; 
    $emil_array=$_POST['email']; 


    if($id_array){ 

    foreach($id_array as $key=>$id_val){ 
     $name = $name_array[$key]; 
     $year = $year_array[$key]; 
     $email = $emil_array[$key]; 
     $sql = "update activity_logs set name='{$name}' , lastname = '{$year}' , email='{$email}' where activity_logs_id = {$id_val}"; 
     $res = mysql_query($sql); 

    } 

    } 

} 
+0

。建议使用[prepared statements](http://php.net/manual/en/mysqli.prepare.php)也是一个好主意。 – Mikey

+0

感谢您的建议@Mikey的欢呼声 –