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