提问人:Kerub Angel 提问时间:11/9/2023 最后编辑:RiggsFollyKerub Angel 更新时间:11/9/2023 访问量:37
如何使用数组更新mysql php pdo中的多个列
How to update multiple colunms in mysql php pdo using arrays
问:
当我单击更新 btn 时,它只更新带有单个列的列,当我选择具有多个列的表单时,它只更新最后一个条目最后一个 id
如果我选择包含更多数据的列,它只会更新数据库中的最后一个 ID,而不是所有内容,但在有一个列的地方,它会毫无问题地更新两个表
这是用于更新的表单,它显示了每张发票的所有 ID
<tbody class="detail">
<?php
$count= 0;
foreach ($getdata as $invoices):
$count++;
?>
<tr>
<div class="inputfield">
<td class="no">1</td>
<td >
<textarea name="productname[]" class="productname" id="" cols="35" rows="2" >
<?php echo $invoices->productname; ?>
</textarea>
</td>
<td >
<input id="quantit" name="quantity[]" class="quantity"
value="<?php echo $invoices->quantity; ?>"
type="text" onchange="Calc(this);">
</td>
<td >
<input id="prices" name="price[]" class="price"
value="<?php echo $invoices->price; ?>"
type="text" onchange="Calc(this);">
</td>
<td >
<input name="amount[]" class="amount"
value="<?php echo $invoices->amount; ?>"
type="text" >
</td>
<input type="hidden" name="item_id" value="<?php echo $invoices->item_id; ?>">
</div>
</tr>
<?php
endforeach;
?>
</tbody>
这是发生操作的地方,当我陈词滥调时,这里只显示一个 ID,而不是所有 ID
$invoices_id = $_GET['invoices_id'];
$invoice_fk = $_GET['invoices_id'];
if (isset($_POST['edit_invoice'])) {
//Creatr Data array
$data = array();
$data['invoices_id'] = $_POST['invoices_id'];
$data['invoice_fk'] = $_POST['invoice_fk'];
$data['productname'] = $_POST['productname'];
$data['quantity'] = $_POST['quantity'];
$data['price'] = $_POST['price'];
$data['amount'] = $_POST['amount'];
$data['sub_total'] = $_POST['sub_total'];
$data['total_tax'] = $_POST['total_tax'];
$data['total'] = $_POST['total'];
$data['customer_fk'] = $_POST['customer_fk'];
$data['item_id'] = $_POST['item_id'];
$data['companies_fk'] = getCompany()['companies_fk'];
$data['last_activity'] = date("Y-m-d H:i:s");
//die(print_r($data['item_id'] = $_POST['item_id']));
$field_array = array('productname','quantity', 'price');
if ($validate->isRequired($field_array)) {
//Update Invoice
if ($invoice->updateInvoice($data)){
redirect('updateinovice.php?invoices_id='.$invoices_id, 'Invoice Edited', 'success');
} else {
redirect('updateinovice.php?invoices_id='.$invoices_id, 'Invoice not edited something went wrong', 'error');
}
} else {
redirect('updateinovice.php?invoices_id='.$invoices_id, 'All fields are required', 'error');
}
}
这是模型所在位置,并且正在进行更新,已尝试显示 ID,它仅在数据库中显示多个数据的最后一个 ID
public function updateInvoice($data){
try {
$this->db->query('UPDATE `tbl_invoice_total`
SET customer_fk = :customer_fk,
companies_fk = :companies_fk,
sub_total = :sub_total ,
total_tax = :total_tax,
total = :total,
last_activity =:last_activity
WHERE invoices_id = :invoices_id ');
$this->db->bind(':customer_fk', $data['customer_fk']);
$this->db->bind(':companies_fk', $data['companies_fk']);
$this->db->bind(':sub_total', $data['sub_total']);
$this->db->bind(':total_tax', $data['total_tax']);
$this->db->bind(':total', $data['total']);
$this->db->bind(':last_activity', $data['last_activity']);
$this->db->bind(':invoices_id', $data['invoices_id']);
$this->db->execute();
foreach ($data['productname'] as $key => $value) {
$this->db->query('UPDATE tbl_invoice_items
SET invoice_fk =:invoice_fk,
productname = :productname ,
quantity = :quantity,
price = :price,
amount = :amount,
last_activity =:last_activity
WHERE item_id = :item_id');
$this->db->bind(':invoice_fk', $data['invoice_fk']);
$this->db->bind(':productname', $data['productname'][$key]);
$this->db->bind(':quantity', $data['quantity'][$key]);
$this->db->bind(':price', $data['price'][$key]);
$this->db->bind(':amount', $data['amount'][$key]);
$this->db->bind(':last_activity', $data['last_activity']);
$this->db->bind(':item_id', $data['item_id']);
$this->db->execute();
}
//die(print_r($data));
return true;
} catch (Throwable $e) {
echo '<div class="error">'.get_class($e).' on line '.$e->getLine().' of '. $e->getFile().': '.$e->getMessage().'</div>';
}
}
我在谷歌上搜索找不到与我的问题类似的内容
我尝试使用 for each 在它显示的表单上回显 id,但是当我使用 die 回显它时,它只显示最后一个 id
我试图在 youtube 上搜索,但找不到与我的挑战相似的东西
我想要的是,当我单击“更新”时,它必须更新多个列,它必须能够更新所有列,而不仅仅是更新最后一个列
答: 暂无答案
评论
name="item_id"
name="item_id[]"
print_r($_POST); exit;
<div>
<tr>
<input>
<tr>
id="quantit"
id="prices"
id