我有2张桌子
php - 引用的键插入新值后,如何使外键自动更新?-LMLPHP

php - 引用的键插入新值后,如何使外键自动更新?-LMLPHP

我已将bmatricno用作称为bmatricno_fk的外键的引用键。好的,现在我想为一个表插入包含bmatricno和bname的新数据,这是第一个图片。然后我希望bmatricno_fk的列也与引用的键bmatricno具有相同的值进行更新。但是我失败了。

然后,我尝试手动插入2张桌子。然后我有插入多个表的问题。我知道使用带有提交的事务,因为我使用PDO。问题是,由于我必须使用类似:bmatricno' => $_POST['bmatricno'].之类的代码,因此,我不知道如何使用包含此类内容的事务。

我的代码看起来像这样。 (不是吗?)

$ses = $_SESSION['sBorrow'];

        $query = "
            INSERT INTO borrow (
                bmatricno,
                bname,
                bdatetime
            ) VALUES (
                :bmatricno,
                :bname,
                NOW()
            )
            ;
            INSERT INTO thesis(
                bmatricno_fk
            ) VALUES (
                :bmatricno
            )
            SELECT serialno, title
            FROM thesis
            WHERE serialno = :ses
        ";

        $query_params = array(
            ':bmatricno' => $_POST['bmatricno'],
            ':bname' => $_POST['bname'],
            ':ses' => $_SESSION['sBorrow']
        );

        try
        {
            // Execute the query to create the user
            $stmt = $db->prepare($query);
            $result = $stmt->execute($query_params);
        }
        catch(PDOException $ex)
        {
            // Note: On a production website, you should not output $ex->getMessage().
            // It may provide an attacker with helpful information about your code.
            die("Failed to run query: " . $ex->getMessage());
        }


那是我当前的代码。所以我的问题是,一旦引用的键获得新值,外键是否可以更新?如果没有,如何使用我之前所述的代码进行交易?请帮助我。我需要完成这项工作。

注意:您注意到在第二个图片和列上,matricno_fk运作良好,因为我将输入内容插入值中,这意味着手动输入。

最佳答案

好吧,我确实找到了解决我问题的方法。 frz3993工作,但我才意识到我的变量之一是数组。因此,我在查询上使用foreach。由于它是一个数组,由于即时通讯很忙,所以我不确定如何在内部事务中使用foreach。所以我一一执行查询。并像这样在我的第二条语句上加上foreach。

$ses = $_SESSION['sBorrow'];


        $query = "
            INSERT INTO borrow (
                bmatricno,
                bname,
                bdatetime
            ) VALUES (
                :bmatricno,
                :bname,
                NOW()
            )
        ";

        $query_params = array(
            ':bmatricno' => $_POST['bmatricno'],
            ':bname' => $_POST['bname']
        );

        try
        {
            // Execute the query to create the user
            $stmt = $db->prepare($query);
            $result = $stmt->execute($query_params);
        }
        catch(PDOException $ex)
        {
            // Note: On a production website, you should not output $ex->getMessage().
            // It may provide an attacker with helpful information about your code.
            die("Failed to run query: " . $ex->getMessage());
        }


        //----------------------



        $query = "
            UPDATE thesis
                SET
                    bmatricno_fk = :bmatricno,
                    bavailable = 'Unavailable'
                WHERE
                    serialno = :ses
        ";

        foreach($ses as $s){

            $query_params = array(
                ':bmatricno' => $_POST['bmatricno'],
                ':ses' => $s
            );

            try
            {
                // Execute the query to create the user
                $stmt = $db->prepare($query);
                $result = $stmt->execute($query_params);
            }
            catch(PDOException $ex)
            {
                // Note: On a production website, you should not output $ex->getMessage().
                // It may provide an attacker with helpful information about your code.
                die("Failed to run query: " . $ex->getMessage());
            }
        }


        //----------------------


我知道此解决方案可能不是最实用的,但是我需要快速完成它,无论如何我只需要在localhost上显示它即可。无论如何,感谢您的帮助:)

关于php - 引用的键插入新值后,如何使外键自动更新?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38683476/

10-09 00:44