Php 如何使用每行包含许多数据的多行chekecd从表单更新mysql数据库
在表中: 身份证件 客户名称 价格 控制 更新数据库Php 如何使用每行包含许多数据的多行chekecd从表单更新mysql数据库,php,mysql,Php,Mysql,在表中: 身份证件 客户名称 价格 控制 更新数据库 如果我理解正确,那么以下内容可能会有帮助 首先修改表单元素,使其使用与指定给checkbox字段相同的语法-但这是一个不寻常的名称 <form action="" method="post"> <table> <tr> <td>ID</td> <td>Customer Name</td> <td>P
如果我理解正确,那么以下内容可能会有帮助 首先修改表单元素,使其使用与指定给checkbox字段相同的语法-但这是一个不寻常的名称
<form action="" method="post">
<table>
<tr>
<td>ID</td>
<td>Customer Name</td>
<td>Price</td>
<td>Control</td>
</tr>
<tr>
<td><input type="text" value="111" name="userID[]" /></td>
<td><input type="text" value="john" name="fname[]" /></td>
<td><input type="text" value="1000" name="price[]" /></td>
<td><input type="checkbox" value="120" name="checkbox[]" /></td>
</tr>
<tr>
<td><input type="text" value="115" name="userID[]" /></td>
<td><input type="text" value="mike" name="fname[]" /></td>
<td><input type="text" value="800" name="price[]" /></td>
<td><input type="checkbox" value="120" name="checkbox[]" /></td>
</tr>
<tr>
<td><input type="text" value="98" name="userID[]" /></td>
<td><input type="text" value="tetra" name="fname[]" /></td>
<td><input type="text" value="125" name="price[]" /></td>
<td><input type="checkbox" value="120" name="checkbox[]" /></td>
</tr>
</table>
<button type="submit">Update Database</button>
</form>
然后,处理请求的PHP的基本形式可能如下所示:
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' ){
$userids=!empty( $_POST['userID'] ) ? $_POST['userID'] : false;
$fnames=!empty( $_POST['fname'] ) ? $_POST['fname'] : false;
$prices=!empty( $_POST['price'] ) ? $_POST['price'] : false;
$checkboxes=!empty( $_POST['checkbox'] ) ? $_POST['checkbox'] : false;
$sql='update `TABLE` set `fname`=?, `price`=?, `control`=? where `userID`=?';
$stmt=$db->prepare( $sql );
if( $stmt ){
$stmt->bind_param('siii', $fname, $price, $control, $uid );
foreach( $checkboxes as $index => $control ){
if( !empty( $control ) ){
$uid=$userids[ $index ];
$fname=$fnames[ $index ];
$price=$prices[ $index ];
$stmt->execute();
}
}
$stmt->close();
$db->close();
}
}
?>
由于有多个元素具有相同的名称,但没有使用array[]语法,因此只能看到一个userID、fname和price。。。使用like userID[]代替为什么复选框的值总是120?@RamRaider,这是我的错误,可以使用任何值吗?为什么不使用elvis运算符?谢谢,但在这个解决方案中只更新了一行,如何更新多行?真的吗?你确定吗?@RamRaider,是的。在act中:当一个复选框选中D时,该复选框的值将传递给POST,这很好,但问题是:另一个字段将通过null值传递给POST。那么构建的数组没有相等的计数。我解决了我的问题。但是谢谢你的帮助,如果上面有小变化的话!空$control{…它应该解释空值和空值,所以我希望索引和其他值应该保持同步