所以我有两张桌子,“房间”和“ scheds ”。 我还有一个输入表单,其中值被插入到这两个表中。
这是输入的样子:
房间号:________________
容量:________________
- [提交按钮] -
步骤:
当我输入房间ID和容量时,它应该按原样在房间表中插入值,然后在 scheds 表中插入2个相同的房间ID值进入 roomid 列并自动将“1st”和“2nd”连续添加到 semester 列。
我遇到问题的唯一部分是,我正在考虑如何处理这个问题的两种方法,但遗憾的是我似乎找不到合适的代码:
1.如果房间ID在房间表中具有相同的确切值,则它不应再在两个表中插入,而是回显该房间已存在。
2.如果房间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>";
}
}
?>
答案 0 :(得分:2)
如果你想检查两者是否&#34; id&#39; s&#34;存在于两个表中,您可以使用以下命令使用JOIN和条件语句。您可以根据自己的意愿进行插入或不进行插入。
<?php
$user = 'xxxx';
$pass = 'xxxx';
$con = new PDO("mysql:host=localhost;dbname=your_db", $user, $pass);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $con->prepare("
SELECT *
FROM rooms
LEFT JOIN scheds
ON rooms.roomid=scheds.roomid
WHERE rooms.roomid= 'NB201'
");
$stmt->execute();
if($stmt->rowCount() > 0){
echo "It exists."; // do NOT INSERT
}
else{
echo "It does not exist."; // do the INSERT
}
您也可以通过更改
来尝试INNER JOINLEFT JOIN scheds
到
INNER JOIN scheds
如果您未获得结果,那么您希望使用LEFT JOIN。