首页 > 解决方案 > 我只能在 php 会话期间插入 1 个表吗?

问题描述

if (isset($_POST["AddErrorCode"]))
{
    $AddErrorCodeDB = $_POST["AddErrorCode"];
    $AddErrorDescriptionDB = $_POST["AddErrorDescription"];
    $AddQuantityDB = $_POST["AddQuantity"];
    $AddStartDateDB = $_POST["AddStartDate"];
    $AddCompletionDateDB = $_POST["AddCompletionDate"];
    $AddReviewTypeDB = $_POST["AddReviewType"];
    session_start();
    $WO_ID = $_SESSION['SELECTED_WO_ID'];
    if ($AddReviewTypeDB === 'PR')
    {
        $AddReviewerType = 'Peer Review';
        $insert = "INSERT INTO `wo_errorinfo` (
                        `Error_Code` ,
                        `Error_Description` ,
                        `Error_Quantity` ,
                        `Review_Type` ,
                        `WO_NO`) VALUES (
                        '$AddErrorCodeDB' ,
                        '$AddErrorDescriptionDB' , 
                        '$AddQuantityDB' ,
                        '$AddReviewerType' ,
                        '$WO_ID')";

        if ($AddCompletionDateDB === '')
        {
            //echo 'ritwik';
            $status = 'Peer RWK';
            $update = "UPDATE `associated_wos` SET `WO Status` = '$status' WHERE `ID` = '$WO_ID'";
        }
        else
        {
            //echo 'ritwik1';
            $status = 'Peer Review Complete';
            $update = "UPDATE `associated_wos` SET `WO Status` = '$status' WHERE `ID` = '$WO_ID'";
        }
        $sql = "SELECT * FROM `wo_reviewerqa` WHERE `WO_ID` = '$WO_ID' AND `reviewType` = '$AddReviewerType'";
        $result = mysqli_query($conn, $sql);
        $num_rows = mysqli_num_rows($result);
        //echo $num_rows;
        if ($num_rows === 0)
        {
            //echo 'ritwik';
            $insertreview = "INSERT INTO `wo_reviewerqa` (
                                `reviewType`,
                                `reviewStartDate`,
                                `reviewCompleteDate`,
                                `WO_ID`) VALUES (
                                '$AddReviewerType',
                                '$AddStartDateDB',
                                '$AddCompletionDateDB' ,
                                '$WO_ID')";
            //echo $insertreview;
        }
else
        {
            if ($AddStartDateDB !== '')
            {
                echo "<script type='text/javascript'>alert('Review Already Started, Start Date cant be changed');</script>";
            }
        }
        if($conn->query($insertreview) === True)
        {
            echo "<script type='text/javascript'>alert('Start date updated successfully');</script>";
        }
        if ($conn->query($insert) === True)
        {
            echo "<script type='text/javascript'>alert('Error Code Submitted successfully');</script>";
        }
    }

我的所有条件都得到满足。我什至在 echo 中获得了所有正确的值,但只有第一个插入查询 ieinsert into 'wo_errorinfo'正在工作,其他所有内容都对表没有影响。我们不能在会话期间插入多个表吗?是因为session_start()? 我一直试图解决这个问题超过 1 天,但无法解决。

标签: phpmysql

解决方案


您需要执行您的语句,目前只$sql执行。

您还应该避免通过连接字符串来构建查询,因为这会使您容易受到 SQL 注入攻击,您的用户可以通过在输入中传递特殊字符来修改您的查询。您应该使用mysqli::prepare,例如:

if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();
}

推荐阅读