使用php在mysql数据库中上传图像无法正常工作

时间:2017-11-01 17:33:46

标签: php html mysql image post

当我用其他文本字段将图像上传到MySQL数据库时,我遇到了问题。问题是我的文本字段数据插入另一列,图像文件插入另一列,同时单击注册按钮。不知道是什么问题。 Heres是我的代码。

<?php 
// include 'connection.php';
ini_set('mysqli.connect_timeout', 300);
ini_set('default_socket_timeout', 300);






  if (isset($_POST['submit'])) {

    }

      function fieldData(){
      $con = mysqli_connect('localhost','root','','a.m.system');
        if(! $con ) {die('Could not connect: ' . mysqli_error());}
    //setting field variables
      $fname = $_POST['first_name'];
      $lname = $_POST['last_name'];
       $gender = $_POST['gender'];
      $DOB = $_POST['dob'];
       $batch = $_POST['batch'];
      $address = $_POST['address'];
      $email = $_POST['email'];
     $phone = $_POST['phone'];


     $sqlInsert="INSERT into students  
     (STD_First_Name,STD_Lastt_Name,STD_Gender,STD_DOB
      ,STD_Email,STD_Phone,STD_Address,STD_Batch) 

            VALUES ('$fname' , '$lname' , '$gender' ,'$DOB', '$email', 
      '$phone', '$address', '$batch') ";

         if (mysqli_query($con, $sqlInsert)) {
        $message = "Updated Successfully";
         echo "<script type='text/javascript'>alert('$message');</script>";
         }else{
         echo "<script type='text/javascript'>alert('Error Inserting!!');
     </script>" . mysqli_error($con);
    }

    }
        if (getimagesize($_FILES['image']['tmp_name']) == false) {
            echo "Please select an image!";
        }else{
            $image = addslashes($_FILES['image']['tmp_name']);
            $name = addslashes($_FILES['image']['name']);
            $image = file_get_contents($image);
            $image = base64_encode($image);
            fieldData();
            saveImage($image);
        }

    //displayImage();
    //save image func
    function saveImage($image){
        $conn = mysqli_connect('localhost','root','','a.m.system');
        if(! $conn ) {die('Could not connect: ' . mysqli_error());}
            $qry = " INSERT INTO students (STD_Image) values ('$image') ";
            $res = mysqli_query($conn, $qry);
            if ($res) {
                echo "<br>Image Uploaded";
            }else{
                echo "<br>Image not Uploaded";
            }
    }


            mysqli_close($conn);
 ?>

This is the database snapshot.

3 个答案:

答案 0 :(得分:0)

你正在做两个单独的插入,是你的问题。因此,第一个插入创建您的用户条目。第二个插入只用图像创建一个空记录。

您需要将代码重构为:

1)将第二个插入更改为更新语句。您需要将STD_ID传递给它(使用LAST_INSERT_ID()函数在第一次插入后获取id)并将其传递给saveImage()函数。当你在它时,也传递$ con,所以你不必创建另一个与数据库的连接。

2)将所有代码移到一个地方。意思是,在同一时间构建一个包含图像的插入语句,这样你就不需要两次了。

我对您的脚本进行了一些优化,但上述内容涵盖了您的问题。

答案 1 :(得分:0)

简单来说, 在第一个查询中,您已将数据插入一行。 所以, 您需要UPDATE行插入图像。 但 您使用INSERT :(

答案 2 :(得分:0)

首先在服务器的某个目录中上传照片。然后在像$photo = "/photo/xyz.png"

这样的变量中获取图像文件

students表中添加一个字段以供拍照。现在,您的表结构包含以下字段,如STD_First_Name, STD_Lastt_Name, STD_Gender,STD_DOB, STD_Email,STD_Phone,STD_Address,STD_Batch,photo

$photo variable will be stored in `photo` field.

永远不要在数据库中上传照片。仅在数据库中存储服务器的照片路径。

*****我的建议:使用PDO而不是mysqli ****