php - 我只能在 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 天,但无法解决。
解决方案
您需要执行您的语句,目前只$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();
}
推荐阅读
- .net - 在项目负载上自动化 dotnet 监视?
- google-cloud-dataflow - 将 Dataflow 与 BigQueryIO.Write.Method.STORAGE_WRITE_API 结合使用的示例
- css - 透视原点和消失点
- python-3.x - 为什么我没有得到 logger.info 的任何输出
- java - 将外部 groovy 类包含到源集中
- python - QWebEngineView 在访问特定网站时崩溃
- android - React Native 这是什么意思'@'?
- c++ - 为什么每次使用集合时都会收到奇怪的错误消息?
- sql - Row_Number/Partition By,获取超过一个值的所有结果集
- android - 断言失败:布尔表达式不能为空 [Flutter] [Android Studio]