php - 在 $_POST 中使用从数据库传递给 $_GET 的变量

标签 php mysql

这就是我想要做的 - 我在 MySql 表中有一个列是 AUTO-INC,它是 $job_numb。我想我可以将变量与表单操作一起传递,然后在该表单操作文件中获取它。

这是表单操作代码:

 <form method="post" action="form_action2.php?attachment1=<?=$attachment1;?>, job_numb=<?=$job_numb;?>" enctype="multipart/form-data">

      <div class="form-group">
           <label for="due_date">Show Date</label><br>
           <input type="date" class="form-control" style="max-width: 200px;" id="show_date" name="show_date" value="<?php echo date("n/j/Y", strtotime("$show_date"))?>">
      </div>

      <button type="submit" class="btn btn-primary" value="submit" name="submit" id="submit">Update Record</button>
 </form>

然后我想使用这些变量来选择 UPDATE 语句中的行,这样我a) 可以使用 $job_numb 来选择正确的记录b) 稍后在脚本中将 BOTH 用于 mail 操作。

我知道 $_POST[]$_GET[] 是两个不同的函数,但这对我来说似乎很有意义 - 开发人员如何做到这一点。

$_POST 的脚本:

 <?php
      echo($_GET['job_numb']);
      echo($_GET['attachment1']);

      $servername = "localhost";
      $username = "XXXXXX";
      $password = "XXXXXX";
  try {
      $conn = new PDO("mysql:host=$servername;dbname=jobs_users", $username, $password);
      // set the PDO error mode to exception
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     echo "Connected successfully";

      if(isset($_POST['submit']) && !empty($_POST['submit'])) {
            $job_numb = $_POST['job_numb'];
            $job_name = $_POST['job_name'];
            $job_name_clean = htmlspecialchars($job_name, ENT_QUOTES);
            $comments = $_POST['comments'];
            $comments_clean = htmlspecialchars($comments, ENT_QUOTES);
            $attachment2=$_POST['attachment2'];
            $due_date=$_POST['due_date'];
            $show_date=$_POST['show_date'];
            $AE=$_POST['AE'];
            $status=$_POST['status'];
            $assignee=$_POST['assignee'];
            $assign_email=$_POST['assign_email'];
            $property=$_POST['property'];
            }

      if(isset($_FILES['attachment2'])){
            $errors= array();
            $file_name = $_FILES['attachment2']['name'];
            $file_size = $_FILES['attachment2']['size'];
            $file_tmp = $_FILES['attachment2']['tmp_name'];
            $file_type = $_FILES['attachment2']['type'];
            $file_ext=strtolower(end(explode('.',$_FILES['attachment2']['name'])));

            $expensions= array("jpeg","jpg","png","doc","pdf","docx","tif","tiff");

            if(in_array($file_ext,$expensions)=== false){
                  $errors[]="extension not allowed, please choose a JPEG, PNG, PDF, DOC, DOCX or TIF file.";
  }

  if ( ! $errors ) {
     move_uploaded_file($file_tmp,"uploads/".$file_name);
     echo "Success";
     echo $file_name;
  }else{
     print_r($errors);
  }
    }

 $newdate = date("Y-m-d",strtotime($due_date));
 $showdate = date("Y-m-d",strtotime($show_date));
 $sql = "UPDATE `jobs_canjobs` SET `job_name`='$job_name_clean',`comments`='$comments_clean',`attachment2`='$file_name',`due_date`='$newdate', `show_date`='$showdate',`status`='$status',`assignee`='$assignee',`assign_email`='$assign_email',`AE`='$AE',`Property`='$property' WHERE job_numb = $job_numb";

  $conn->exec($sql);
     }
  catch(PDOException $e)
     {
  echo "Connection failed: " . $e->getMessage();
     }
  $conn = null;
 ?>

我知道变量会传递到执行文件,但我无法将它们添加到整个操作中。我错过了一步吗?我做错了什么吗?

我还想指出,我知道我的代码不稳定,我知道我没有使用准备好的语句。它会变得更好,而且会越来越好——我不断地阅读和练习。谢谢。

最佳答案

我将其添加到顶部并能够提取 $url 字符串:

 $attachment1 = $_GET['attachment1'];
 $job_numb = $_GET['job_numb'];

我还必须编辑表单操作:

<form method="post" action="form_action2.php?attachment1=<?=$attachment1;?>&job_numb=<?=$job_numb;?>" enctype="multipart/form-data">

就是这样。

关于php - 在 $_POST 中使用从数据库传递给 $_GET 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41599029/

相关文章:

php - Htaccess 只允许特定的 URL 不加载它的 CSS

mysql - 无法通过 NetBeans 插入 MySQL

mysql - Kubernetes Docker/MySQL 一项服务中的多个数据库

php - “创建于”和 'updated at' 字段

php - 使用 AdoDB 向数据库中插入数据

php - 比较两个sql表

php - 我如何访问在 php 类中动态定义的属性

Java Spring Tomcat : Custom DataSource Factory Being Ignored

mysql - 如何在 MySQL 中进行行版本控制,同时保持外键引用完整性

PHP 和 Labview - 从 labview 获取一个值并在网页上显示该值 - 同一网络上的两台不同计算机