我试图删除 - 使用复选框 - 使用PHP填充SQL数据的HTML表行。我是新手,所以我很感激我的代码有任何改进。 (特别是SQL注入,我在研究时读了很多次)
带有表格的HTML的一部分 - inv_main.php
...
<div class="mid">
<h1>Inventory</h1>
<div class="content">
<!-- buttons -->
<div class="inv_btn">
<a href="add_form.php" type="button">Add</a>
<!-- button to press to delete ticked checkboxes -->
<form action="inventory.php" method="post">
<input name="delete" type="submit" id="delete" value="Delete"/>
</form>
</div>
<!-- TABLE -->
<div id="inv_tbl">
<table class="table table-striped" id="tblSearch">
<thead>
<tr>
<th>Product Name</th>
<th>Supplier Name</th>
<th>Category</th>
<th>Unit Price</th>
<th>Retail Price</th>
<th>Est. profit per unit</th>
</tr>
</thead>
<tbody>
<?php foreach($allInfo as $info): ?>
<tr>
<td> <?= $info['product'] ?> </td>
<td> <?= $info["supplier_name"] ?> </td>
<td> <?= $info["category"] ?> </td>
<td>$ <?= $info["unit_price"] ?> </td>
<td>$ <?= $info["retail_price"] ?> </td>
<td>$ <?= number_format(($info["unit_price"] - $info["retail_price"]), 2) ?></td>
<td><input type="checkbox" name="checkbox[<?= $info['product'] ?>"] id="checkbox[]" value="<?= $info['product'] ?>" method="post"/></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
</div>
</div>
...
PHP - inventory.php
<?php
/**
* inventory.php
* configures the inventory page.
*/
// configuration
require("../includes/config.php");
require("../includes/render_dash.php");
// if user reached page via GET...
if($_SERVER["REQUEST_METHOD"] == "GET")
{
// get all the info from the inventory database
$allInfo = [];
$getInfo = query("SELECT * FROM inventory WHERE id = ?", $_SESSION["id"] );
foreach($getInfo as $info)
{
$allInfo[] = [
"product" => $info["product"],
"unit_price" => number_format($info["unit_price"], 2),
"retail_price" => number_format($info["retail_price"], 2),
"supplier_name" => $info["supplier_name"],
"category" => $info["category"],
];
}
// render HTML
render("inv_main.php", ["title" => "Inventory", "allInfo" => $allInfo ] );
}
请注意评论<!-- button to press to delete ticked checkboxes -->
后面的'表单'和tbody标记内的最后一个表数据。
我已经看到了类似的问题,但我仍然无法弄明白。如果有帮助,库存数据库中的PRIMARY KEYS是用户的id
和product
。 id
用于$_SESSION
,因此使用它会删除所有库存数据,例如用户ID#30,因此我正在尝试访问产品,这是一个字符串。