如何在PHP中的不同SQL表上使用相同的按钮
我有“删除”按钮,有两个不同的表。如何使用同一按钮更改不同表中的信息如何在PHP中的不同SQL表上使用相同的按钮,php,html,Php,Html,我有“删除”按钮,有两个不同的表。如何使用同一按钮更改不同表中的信息 if (isset($_GET['delete'])) { $stmt = $conn->prepare('DELETE FROM radars WHERE id = ?'); $stmt->bind_param('i', $_GET['delete']); $stmt->execute(); $stmt->close(); } 它能用,但我需要这个按钮,这个桌子
if (isset($_GET['delete'])) {
$stmt = $conn->prepare('DELETE FROM radars WHERE id = ?');
$stmt->bind_param('i', $_GET['delete']);
$stmt->execute();
$stmt->close();
}
它能用,但我需要这个按钮,这个桌子也能用
$stmt = $conn->prepare('DELETE FROM drivers WHERE driverId = ?');
$stmt->bind_param('i', $_GET['delete']);
$stmt->execute();
$stmt->close();
我的纽扣看起来像这样
<button name="delete" value="<?php echo $row['id']; ?>" >Delete</button>
您也可以传递该信息,例如:
<button name="delete" value="radars|id|<?php echo $row['id']; ?>" >Delete</button>
<button name="delete" value="drivers|driverId|<?php echo $row['driverId']; ?>" >Delete</button>
这将为您提供$chunks[0]
,$chunks[1]
字段名和$chunks[2]
您的查询将如下所示:
'DELETE FROM $chunks[0] WHERE $chunks[1] = $chunks[2]';
更改按钮名称以指示要从中删除的表
<button name="delete_radar" value="<?php echo $row['id']; ?>" >Delete</button>
更一般的方法是向表单添加隐藏的输入
<form>
<input name="table" type="hidden" value="radar">
<button name="delete" value="<?php echo $row['id']; ?>">Delete</button>
</form>
<form>
<input name="table" type="hidden" value="drivers">
<button name="delete" value="<?php echo $row['driverId']; ?>">Delete</button>
</form>
它真的只是一个按钮,还是表中每一行上的一个按钮?当您为AltAttributed的值分配不同的值时,您可以分配不同的名称并检查$\u Get中的正确索引项。我想了想,但开始想象您没有2个表,而是100个表。必须有更简单的方法,我只是编辑了我的响应,它将在任何具有任何ID字段的表上工作。@Darius我添加了一个更通用的解决方案。也许你的答案也正确,但我不知道你的if(isset($\u GET['delete']){$table=$\u GET['table'];//从指定表中删除的代码}工作我已更新了答案,以显示如何从$\u GET['table']
动态构造查询。您的答案将是此问题的最佳解决方案,但它不起作用。如果(isset($_GET['delete']){$chunks=explode('.|',$_GET['delete']);$stmt=$conn->prepare('delete FROM'.$chunks[0].'WHERE'.$chunks[1].=?');$stmt->bind_param('i',$chunks[2]);$stmt execute();$stmt->close(),则缺少一个“s”。它不是$chunk[0],变量名是$chunks,所以它应该是$chunks[0]。看起来sql不像explode函数。未捕获错误:对成员函数bind_param()Explode函数的调用与sql无关$chunks[0]只是另一个变量。回显$chunks[2]并查看是否接收到任何数据。
<button name="delete_radar" value="<?php echo $row['id']; ?>" >Delete</button>
<button name="delete_driver" value="<?php echo $row['driverId']; ?>" >Delete </button>
if (isset($_GET['delete_radar'])) {
// code to delete from radar table
} elseif (isset($_GET['delete_driver'])) {
// code to delete from drivers table
}
<form>
<input name="table" type="hidden" value="radar">
<button name="delete" value="<?php echo $row['id']; ?>">Delete</button>
</form>
<form>
<input name="table" type="hidden" value="drivers">
<button name="delete" value="<?php echo $row['driverId']; ?>">Delete</button>
</form>
if (isset($_GET['delete'])) {
$table_key_cols = array('radar' => 'id', 'drivers' => 'driverId');
$table = $_GET['table'];
if (isset($table_key_cols[$table])) {
$col = $table_key_cols[$table];
$stmt = $conn->prepare("DELETE FROM $table WHERE $col = ?");
$stmt->bind_param("i", $_GET['delete']);
$stmt->execute();
$stmt->close();
}
}