php变量不会保存到数据库中而不包括$ parallellitem

时间:2016-06-24 10:32:35

标签: php mysql mysqli

我正在尝试将$ManuellTagnavn保存到数据库中,而不包括$parallellitem。我使用HTML输入来获取$ManuellTagnavn。有人能想出我做错了什么吗?无论有没有$parallellitem,我都想保存两者。 请检查以下内容:

    <?php
 if(isset($_POST["SettInnM"]))

      {
      $pattern1 = "/^[A-Z]{1}$/";
      $pattern2 = "/^[0-9]{3}$/";
      $ManuellTagnavn = $_POST["TagnavnM"];
      $ManuellTagnavn = strtoupper($ManuellTagnavn);
      $annexaM = substr($ManuellTagnavn,0,2);
      $annexb1M = substr($ManuellTagnavn,2,-4);
      $sequenceNrM = substr($ManuellTagnavn,4,-1);
      $paralellItem = substr($ManuellTagnavn,7,8);
      $navn= $_SESSION['user'];
      $dato = date("d/m/Y");
      $prosjektID = $_SESSION["prosjekt_id"];


        $searcha = mysqli_real_escape_string($db, $_POST['SettInnM']);
        $query = "select plass from annexa where plass = '$annexaM'";
        $resA = mysqli_query($db, $query) or trigger_error(mysql_error(),$query);
        $rowA = mysqli_fetch_assoc($resA);


        $searchb1 = mysqli_real_escape_string($db, $_POST['SettInnM']);
        $sql = "select format from annexb1 where format = '$annexb1M'";
        $resB1 = mysqli_query($db, $sql) or trigger_error(mysql_error(),$sql);
        $rowB1 = mysqli_fetch_assoc($resB1);

        if ($rowA AND $rowB1 AND !preg_match($pattern1, $annexa) AND preg_match($pattern2, $sequenceNrM)) //AND preg_match($pattern1, $paralellItem) 
        {
        echo ("Hei");
        print_r($rowA);
        print_r($rowB1);
        $sql = "Select prosjekttag, prosjekt_id from tagnavn where prosjekttag = '$ManuellTagnavn' AND prosjekt_id = '$prosjektID'";
        $resultat = mysqli_query($db, $sql);
        if(mysqli_num_rows($resultat) == 0)
        {
            $sql = "Insert into tagnavn(prosjekttag, startdato, prosjekt_id, opprettav)" //ENDRET AV ZLATAN 
            ."values ('$ManuellTagnavn', '$dato', '$prosjektID', '$navn')"; //ENDRET AV KAMALAN
            $resultat = mysqli_query($db, $sql);
        }
        else
        {
            return;
        }
        }

      if(!$resultat)
       { 
            echo '<script language="javascript">';
            echo 'alert("Maneult Kunne ikke sette inn i databasen")';
            echo '</script>';
            return;
       }
      }        
?>

3 个答案:

答案 0 :(得分:0)

我可以看到你已经两次添加了相同的变量。

$ ManuellTagnavn = $ _POST [“TagnavnM”];

$ ManuellTagnavn = strtoupper($ ManuellTagnavn);

这是与变量冲突的主要问题。只需重命名一个,然后再试一次。感谢。

答案 1 :(得分:0)

以下是您想要实现的目标吗?

  • 如果$ paralellItem被&#34;验证&#34;通过preg_match,您可以使用$ paralellItem
  • 将信息放入数据库中
  • 如果$ paralellItem没有经过验证&#34;通过preg_match,您可以使用$ paralellItem
  • 将信息放入数据库中

你的问题是你的脚本只做了第二次吗?

我是初学者,所以我不能真正了解你的代码所做的事情,但我认为你必须重新考虑这一行:

if ($rowA AND $rowB1 AND !preg_match($pattern1, $annexa) AND preg_match($pattern2, $sequenceNrM)) //AND preg_match($pattern1, $paralellItem) 

您可以尝试执行以下操作:

if ($rowA AND $rowB1 AND !preg_match($pattern1, $annexa)
    AND preg_match($pattern2, $sequenceNrM) AND preg_match($pattern1, $paralellItem)){
    // Here you have have included the $paralellItem in your if statement
}
elseif ($rowA AND $rowB1 AND !preg_match($pattern1, $annexa)
    AND preg_match($pattern2, $sequenceNrM)){
    // Here you didn't include the $paralellItem in your if statement.
}

或仅为preg_match($ pattern1,$ paralellItem)制作一个额外的

答案 2 :(得分:0)

$ ManuellTagnavn有两种不同的长度,无论是8let还是7let。因此,当使用substr()时,如果字符串仅为7个字符,则将字符串分割为8个字符串是错误的。应该用IF语句检查长度。在这个IF语句中,应该在$ manuelltagnavn上为给定长度定制substr()。