【发布时间】:2015-06-09 19:37:20
【问题描述】:
所以我有 2 张桌子,“rooms”和“scheds”。 我还有一个输入表单,其中的值被插入到这两个表中。
这是输入的样子:
房间号:________________
容量:________________
-[提交按钮]-
程序:
当我输入房间 ID 和容量时,它应该在 rooms 表中插入值,然后在 scheds 表中插入 2 个相同的房间 ID 值在 roomid 列中,并自动将“1st”和“2nd”连续添加到 semester 列中。
我唯一遇到的问题是,我正在考虑两种方法来解决这个问题,但不幸的是,我似乎无法为此获得正确的代码:
1. 如果房间 ID 在 rooms 表中具有相同的确切值,则不应再将其插入两个表中,而是回显房间已存在。
2. 如果 Room ID 在 scheds 表中已经有“1st”和“2nd”学期的值,则回显该房间已经存在。
这是“rooms”表。
+----+--------+----------+
| id | roomid | capacity |
+----+--------+----------+
| 1 | NB201 | 30 |
+----+--------+----------+
| 2 | NB202 | 30 |
+----+--------+----------+
这是“scheds”表。
+----+--------+----------+
| id | roomid | semester |
+----+--------+----------+
| 1 | NB201 | 1st |
+----+--------+----------+
| 2 | NB201 | 2nd |
+----+--------+----------+
| 3 | NB202 | 1st |
+----+--------+----------+
| 4 | NB202 | 2nd |
+----+--------+----------+
以下是我目前正在处理的代码。
<?php
if($_POST){
try{
//write query
$query = "INSERT INTO rooms SET roomid = ?, capacity = ?, roomimage = ?";
//prepare query for excecution
$stmt = $con->prepare($query);
//bind the parameters
$stmt->bindParam(1, $_POST['roomid']);
$stmt->bindParam(2, $_POST['capacity']);
$stmt->bindParam(3, $_POST['roomimage']);
// Execute the query
if($stmt->execute()){
echo "<div class='btn-success'>Room was successfully saved.</div>";
}else{
echo "<div class='btn-danger'>Unable to save room.</div>";
}
}catch(PDOException $exception){ //to handle error
echo "<div class='btn-danger'>Error: " . $exception->getMessage() . "</div>";
}
}
?>
<?php
if($_POST){
try{
//-----2 semesters-----
if($_POST['semester']=='2'){
//write query
$query_roomsched1 = "INSERT INTO sched_2014_2015 SET roomid = ?, semester = ?";
//prepare query for excecution
$stmt = $con->prepare($query_roomsched1);
//bind the parameters
$stmt->bindParam(1, $_POST['roomid']);
$stmt->bindValue(2, '1st');
// Execute the query
if($stmt->execute()){
echo "<div class='btn-success'>Schedule table for 1st semester was successfully created.</div>";
}else{
echo "<div class='btn-danger'>Unable to create schedule table for 1st semester.</div>";
}
//write query
$query_roomsched2 = "INSERT INTO sched_2014_2015 SET roomid = ?, semester = ?";
//prepare query for excecution
$stmt = $con->prepare($query_roomsched2);
//bind the parameters
$stmt->bindParam(1, $_POST['roomid']);
$stmt->bindValue(2, '2nd');
// Execute the query
if($stmt->execute()){
echo "<div class='btn-success'>Schedule table for 2nd semester was successfully created.</div>";
}else{
echo "<div class='btn-danger'>Unable to create schedule table for 2nd semester.</div>";
}
}catch(PDOException $exception){ //to handle error
echo "<div class='btn-danger'>Error: " . $exception->getMessage() . "</div>";
}
}
?>
【问题讨论】:
-
您可以运行
SELECT查询,然后使用count()检查是否存在相同的行。如果没有,做点什么;别的……做别的事。这是一种方法。 -
感谢弗雷德的回复。但是我不知道该怎么做。你能告诉我怎么做吗?我目前正在处理的代码都是过去几天研究的结果。我 2 个月前才开始编写 PHP。我仍在尝试边写代码边学习。
-
不客气。当谷歌搜索“mysql 检查两个表中是否存在行”时,请参阅此 Q&A stackoverflow.com/q/7232704 和 stackoverflow.com/q/11180706 的一些结果。
-
我已经在下面发布了答案。