PHP MySQL-如果值不为';不存在于两个表中
所以我有两张桌子,“房间”和“日程安排”。 我还有一个输入表单,其中的值被插入到这两个表中 这是输入的样子:PHP MySQL-如果值不为';不存在于两个表中,php,mysql,pdo,insert,Php,Mysql,Pdo,Insert,所以我有两张桌子,“房间”和“日程安排”。 我还有一个输入表单,其中的值被插入到这两个表中 这是输入的样子: 房间ID:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 容量:uuuuuuuuuuuuuuuuuuuuuuuuuuu -[提交按钮]- 程序: 当我输入房间ID和容量时,它应该按原样在rooms表中插入值,然后在scheds表中,它将在roomid列中插入两个相同的房间ID值,并自动将“1st”和“2nd”连续添加到学期列中 我唯一有问题的是,我在想两种方法来解
房间ID:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
容量:uuuuuuuuuuuuuuuuuuuuuuuuuuu
-[提交按钮]- 程序:
当我输入房间ID和容量时,它应该按原样在rooms表中插入值,然后在scheds表中,它将在roomid列中插入两个相同的房间ID值,并自动将“1st”和“2nd”连续添加到学期列中 我唯一有问题的是,我在想两种方法来解决这个问题,但不幸的是,我似乎无法获得正确的代码:
1.如果房间ID在房间表中具有相同的精确值,则不应再将其插入两个表中,而应回显房间已经存在。
2.如果房间ID在附表中已经有“第一学期”和“第二学期”的值,则回显房间已经存在。
这是“房间”表 这是“计划表” 下面是我目前正在研究的代码
<?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>";
}
}
?>
如果要检查两个表中是否同时存在两个“id”,可以使用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
}
到
如果使用左联接无法获得所需的结果。您可以运行选择查询,然后使用count()
检查是否存在相同的行。如果没有,做点什么;其他的做点别的。这是一种方法。谢谢你的回复。但是我不知道怎么做。你能告诉我怎么做吗?我目前正在研究的代码都是过去几天的研究结果。我两个月前才开始编写PHP。我还在努力学习代码,不客气。在谷歌搜索“mysql检查两个表中是否存在行”时,可以看到这个问答,并获得许多结果。我在下面发布了一个答案。哈!成功了!我刚刚对你的查询做了一个更改。我将“WHERE rooms.id
”后面的id更改为“WHERE rooms.roomid
”。谢谢你,先生。现在我所要做的就是修改它,并将其与我正在编写的代码结合起来。当然,我会尝试对左函数和内函数做更多的研究,以便了解它是如何工作的。最后一个问题tho,我可以在查询中使用变量替换NB201值,对吗?正如我所说,我有一个带有post方法的输入表单,所以我只需声明变量“$roomid=$\u post['roomid']
”并替换NB201?@shtenneknitramanilro不客气,很高兴知道它为您解决了。访问,然后返回答案并执行相同操作,以便正确地结束问题并将其标记为已解决。;-)@是的,您可以先将其分配给变量,然后使用$roomid
代替它,就像WHERE rooms.roomid='$roomid'
一样。引号也是必需的,因为它是一个字符串。干杯,非常感谢你!帮了大忙。@不客气,很高兴能帮上忙。这里有一个很好的连接指南
<?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>";
}
}
?>
<?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
}
LEFT JOIN scheds
INNER JOIN scheds