如何在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();
    }
}