问题是,当我把文本区域留空时,我希望它删除那个条目
我有一个要更新主键(regno)和(name)的表
Table students
(Primary Key) (Foreign Key)
RegNo Name Passwd ProjectID
f12345 Ali 345 1
f12346 Chris 346 1
f12347 Ameer 347 1
我尝试了很多方法,
$names = [
['reg'=> $_POST['s1_id'], 'name'=> $_POST['s1_name']],
['reg'=> $_POST['s2_id'], 'name'=> $_POST['s2_name']],
['reg'=> $_POST['s3_id'], 'name'=> $_POST['s3_name']]
];
$query="update students SET Name=:Name WHERE RegNo=:reg And
ProjectID='$id'";
foreach ( $names as $name)
{
try
{
$stmt = $conn->prepare( $query );
$stmt->bindParam(':Name', $name['name']);
$stmt->bindParam(':reg', $name['reg']);
$result = $stmt->execute();
$msg = "Record updated";
//header("location:adminhome.php");
}
catch(PDOException $ex)
{
$msg = $ex -> getMessage();
}
}
通过这种方式,我只能更新name列。如何更新regno和name。我是新的后端编程。我不知道如何做到这一点。
1条答案
按热度按时间kmbjn2e31#
像这样的?我只是补充了一句
, RegNo=:reg
这个在里面SET
因为reg已经绑定了,我想这就是你需要添加的全部内容。我更新了我的答案,因为它永远不会匹配当你发送一个更新的regno与你的数据结构。所以你应该发送两个regno,一个旧的,一个新的。
对于删除,我定义了两个查询,一个用于删除,一个用于更新。在我们更新结果之前,我先检查一下
foreach
如果新生($name['reg_set']
)是空的,如果是我们运行$query_delete
否则我们就跑$query_update
```$names = [
['reg'=> $_POST['s1_id'], 'reg_set'=> $_POST['s1_id_set'], 'name'=> $_POST['s1_name']],
['reg'=> $_POST['s2_id'], 'reg_set'=> $_POST['s2_id_set'], 'name'=> $_POST['s2_name']],
['reg'=> $_POST['s3_id'], 'reg_set'=> $_POST['s3_id_set'], 'name'=> $_POST['s3_name']]
];
$query_delete="DELETE FROM students WHERE RegNo=:reg And ProjectID='$id'";
foreach ( $names as $name)
{
try
{
}
catch(PDOException $ex)
{
$msg = $ex -> getMessage();
}
}