php - 如何编写插入数据库的函数
问题描述
所以我在 php 中有这个函数,它显示一组表单输入
function column_display(){
static $i = 0;
$i++;
echo'<td><input type="number" name="spent'.$i.'"></td>
<td><textarea rows="2" placeholder="Enter Bill no. and Bill date" name="bill'.$i.'"></textarea></td>
<td><textarea rows="2" placeholder="Name of the vendor" name="vendor'.$i.'" maxlength="45"></textarea></td>
<td><textarea rows="2" placeholder="Additional details of expenditure" name="detail'.$i.'" maxlength="45"></textarea></td>
<td><textarea rows="2" placeholder="Enter Quantity" name="quantity'.$i.'" maxlength="25"></textarea></td>
<td><textarea rows="2" placeholder="Remark/Comment" name="remark'.$i.'" maxlength="45"></textarea></td>
</tr>';
}
计数器从 1 运行到 17。即 17 次,我必须发布每个输入以更新我的表。是否有任何快捷方式我可以循环请求它们并将它们更新到现有表中。这就是我现在的做法
UPDATE school_release
SET item_spent = CASE WHEN item_id = 'it1' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent1'
WHEN item_id = 'it2' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent2'
WHEN item_id = 'it3' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent3'
WHEN item_id = 'it4' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent4'
WHEN item_id = 'it5' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent5'
WHEN item_id = 'it6' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent6'
WHEN item_id = 'it7' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent7'
WHEN item_id = 'it8' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent8'
WHEN item_id = 'it9' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent9'
WHEN item_id = 'it10' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent10'
WHEN item_id = 'it11' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent11'
WHEN item_id = 'it12' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent12'
WHEN item_id = 'it13' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent13'
WHEN item_id = 'it14' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent14'
WHEN item_id = 'it15' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent15'
WHEN item_id = 'it16' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent16'
WHEN item_id = 'it17' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent17'
ELSE item_spent
END,
SET item_bill = CASE WHEN item_id = 'it1' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent1'
WHEN item_id = 'it2' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent2'
WHEN item_id = 'it3' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent3'
WHEN item_id = 'it4' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent4'
WHEN item_id = 'it5' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent5'
WHEN item_id = 'it6' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent6'
WHEN item_id = 'it7' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent7'
WHEN item_id = 'it8' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent8'
WHEN item_id = 'it9' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent9'
WHEN item_id = 'it10' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent10'
WHEN item_id = 'it11' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent11'
WHEN item_id = 'it12' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent12'
WHEN item_id = 'it13' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent13'
WHEN item_id = 'it14' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent14'
WHEN item_id = 'it15' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent15'
WHEN item_id = 'it16' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent16'
WHEN item_id = 'it17' AND stamp = '$stamp' AND school_id = '$school_id' THEN '$spent17'
ELSE item_spent
END,
. . . . . SET item_remark =
解决方案
与其$i
输入每个名称,不如给它们提供数组样式的名称,例如name="bill[]"
and name="vendor[]"
。然后$_POST['bill']
和$_POST['vendor']
将是数组,您可以遍历它们:
$stmt = $conn->prepare("INSERT INTO yourTable (bill, vendor, detail, quantity, remark) VALUES (?, ?, ?, ?, ?)");;
$stmt->bind_param("sssis", $bill, $vendor, $detail, $quantity, $remark);
foreach ($_POST['bill'] as $i => $bill) {
$vendor = $_POST['vendor'][$i];
$detail = $_POST['detail'][$i];
$quantity = $_POST['quantity'][$i];
$remark = $_POST['remark'][$i];
$stmt->execute();
}