使用最后插入的ID显示最后插入的数据库内容


Display database content which is last inserted using last inserted ID

我正在做的是,当表单数据提交时,我显示最后插入的数据,表单是多部分/表单数据。我使用jquery获得此表单数据,在这里我使用Ajax POST将此数据发送到php文件。在那个php文件中,我将数据插入到db表中。在那里我获得插入数据的id。在Ajax调用成功后,我将该id发送到另一个php文件。使用该id,我将显示最后插入的数据…

我的表单是:

<form method="post" enctype="multipart/form-data" name="upload_form" id="data">
<select id="sel">
<option>Select the Project Stream</option>
 <option value="1">Computer Science</option>
 <option value="2">Mechanical</option>
 <option value="3">IT</option>
 <option value="4">Web Development</option>
 <option value="5">MCA</option>
 <option value="6">Civil</option>
 </select><br />
  <input type="text" id="title" placeholder="Project Title"/><br />
  <input type="text" id="vurl" placeholder="If You have any video about project write your video url path here" style="width:435px;"/><br />
 <textarea id="prjdesc" name="prjdesc" rows="20" cols="80" style="border-style:groove;box-shadow: 10px 10px 10px 10px #888888;"placeholder="Please describe Your Project"></textarea>
  <label for="file">Filename:</label>
<input type="file" name="file" id="file"/><br />
<button>Submit</button>
</form>

My js file:

$("form#data").submit(function() {
      alert("update");
      var sid=$("#sel").val();
      alert(sid);
      var ttle = $("#title").val();
      alert(ttle);
      var text = $("#prjdesc").val(); 
      var vurl = $("#vurl").val();
      /*var dataString = 'param='+text+'&param1='+vurl+'&param2='+ttle+'&param3='+id;*/
      var formData = new FormData($(this)[0]);
    formData.append('param',text);
    formData.append('param1',vurl);
    formData.append('param2',ttle );
 formData.append('param3',sid );
      $.ajax({
        type:'POST',
        data:formData,
        url:'insert.php',
        success:function(id) {
          alert(id);
          window.location ="another.php?id="+id;
        },
        cache: false,
        contentType: false,
        processData: false
      });
      return false;
    });

insert.php:

<?php 
 print_r($_FILES);
 $desc = $_POST['param'];
 echo $desc;
 $video = $_POST['param1'];
 echo $video ;
 $title = $_POST['param2'];
 echo $title;
 $tech_id=$_POST['param3'];
 echo $tech_id;
 $host="localhost";
 $username="root";
 $password="";
 $db_name="geny";
 $tbl_name="project_details";

 mysql_connect("$host", "$username", "$password")or die("cannot connect");
 mysql_select_db("$db_name")or die("cannot select DB");
 $allowedExts = array("gif", "jpeg", "jpg", "png");
 $extension = end(explode(".", $_FILES["file"]["name"]));
 $url_dir = "C:/wamp/www/WebsiteTemplate4/upload/";
  if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/jpg")
    || ($_FILES["file"]["type"] == "image/pjpeg")
    || ($_FILES["file"]["type"] == "image/x-png")
    || ($_FILES["file"]["type"] == "image/png"))
    && ($_FILES["file"]["size"] < 50000)
    && in_array($extension, $allowedExts))
   {
      if ($_FILES["file"]["error"] > 0)
{
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
    if (file_exists($url_dir . $_FILES["file"]["name"]))
    {
        echo $_FILES["file"]["name"] . " already exists. ";
    }
    else
    {
        move_uploaded_file($_FILES["file"]["tmp_name"],$url_dir. $_FILES["file"]["name"]);
        // echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
        $tmp = "C:/wamp/www/WebsiteTemplate4/upload/" . $_FILES["file"]["name"];
        $sql="INSERT INTO $tbl_name (title, content, img_path, video_url, project_tech_Id) VALUES ('$title','$desc','$tmp','$video','$tech_id')";
        if(mysql_query($sql)) {
            echo mysql_insert_id();
        } else {
            echo "Cannot Insert";
        }
    }
}
    }
      else
      {
          echo "Invalid file";
      }
?>

another.php:

<?php
  $temp=$_GET['id'];
  echo $temp;
  $host="localhost";
   $username="root";
  $password="";
  $db_name="geny";
   $tbl_name="project_details"; 

     mysql_connect("$host", "$username", "$password")or die("cannot connect");
     mysql_select_db("$db_name")or die("cannot select DB");
     $query = mysql_query("SELECT content FROM project_details WHERE id=". $temp);
     if (!$query) 
      { 
        echo 'Could not run query: ' . mysql_error(); 
        exit; 
         }  
     $row = mysql_fetch_row($query); 
      echo "<div id='uprjct' style='background:#336699;'>
         <p>$row[0]</p>
           </div>";
   ?>

但是我在insert.php中返回的ID包含元素数组…我不想要所有这些东西,我只想要ID(也就是号码)…

mysql_*已弃用,请使用mysqli_*或pdo代替。

在mysqli_*你得到的id通过mysqli_insert_id($link);。mysqli_insert_id

in pdo via $database->lastInsertId(); pdo lastInsertId

在insert.php文件中有

<?php
   print_r($_FILES);
   $desc = $_POST['param'];
   echo $desc;
   ....
   echo $video;
   ....
   echo mysql_insert_id();

你有很多'echo'在你的脚本打印$desc和$video的值和print_r函数打印整个数组$_FILES之前插入的id。删除除echo mysql_insert_id ();

以外的所有echo语句

顺便说一下,尝试使用mysqli_*方法,mysql_方法是不赞成的。

编辑:

删除print_r($_FILES);语句,以从insert.php中删除无用的打印,因此只打印id。

要显示图像,只需使用从查询中检索到的img_path创建一个:

<?php
  $temp=$_GET['id'];
  $host="localhost";
  $username="root";
  $password="";
  $db_name="geny";
  $tbl_name="project_details"; 
  mysql_connect("$host", "$username", "$password")or die("cannot connect");
  mysql_select_db("$db_name")or die("cannot select DB");
  $query = mysql_query("SELECT content, img_path FROM project_details WHERE id=". $temp);
     if (!$query) 
      { 
        echo 'Could not run query: ' . mysql_error(); 
        exit; 
         }  
     $row = mysql_fetch_row($query); 
     echo "<div id='uprjct' style='background:#336699;'>".
          "<img src='".$row['img_path']."' alt='myimg' />".
          "<p>".$row['content']."</p></div>";
   ?>