Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để tải lên hình ảnh PHP và chèn đường dẫn trong MySQL?

Trên bình luận của bạn, bạn hỏi cách tải lên và lưu trữ dữ liệu vào mysql. Vì vậy, đây là:

Để lấy tệp, bạn nên có một tập lệnh trong html của mình như sau:

<html>
<body>

     <form action="upload_file.php" method="post" enctype="multipart/form-data">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file"><br>
        <input type="submit" name="submit" value="Submit">
     </form>

</body>
</html>

Bây giờ, trên POST, tệp PHP của bạn sẽ trông giống như thế này nhưng xin lưu ý rằng bạn phải kiểm tra xem tệp có tồn tại trên POST của bạn không:

if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br>";
  echo "Type: " . $_FILES["file"]["type"] . "<br>";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];

  }

Vì phần "Đã lưu trữ trong:" chỉ là đường dẫn tạm thời, bạn nên chuyển đến đường dẫn hình ảnh 'thực' của mình bằng cách sử dụng move_uploaded_file () . Giả sử đường dẫn thực / mặc định cho hình ảnh của bạn nằm trong:

$image_dir= '/images/';

Bạn chỉ cần di chuyển tệp bằng cách sử dụng sau:

move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $image_dir. $_FILES['uploaded_file']['name']);

Và đường dẫn đầy đủ của bạn đến hình ảnh sẽ là

$image = $final_save_dir . $_FILES['uploaded_file']['name'];

Có một số cách để lưu trữ đường dẫn đến cơ sở dữ liệu của bạn:

Thứ nhất:Chỉ lưu trữ tên tệp và nối đường dẫn của hình ảnh trong PHP bằng cách sử dụng $_SERVER['DOCUMENT_ROOT'] và đường dẫn hình ảnh mặc định của bạn như:

Các giá trị
$sql="insert into employee_detail( emp_image, employee_name, employee_address,
    employee_contact, employee_designation, employee_salary) 
values( '$image', '$_POST[employee_name]', '$_POST[employee_address]', '$_POST[employee_contact]',
    '$_POST[employee_designation]','$_POST[employee_salary]')";

Thứ 2:Là lưu trữ đường dẫn đầy đủ như:

Các giá trị
$sql="insert into employee_detail( emp_image, employee_name, employee_address,
    employee_contact, employee_designation, employee_salary) 
values( '".$_SERVER['DOCUMENT_ROOT']."\\images\\".$image."', '$_POST[employee_name]', '$_POST[employee_address]', '$_POST[employee_contact]',
    '$_POST[employee_designation]','$_POST[employee_salary]')";

Điều tôi đề xuất là cách tiếp cận này, trong đó bạn sẽ nhập đường dẫn một phần (không có root dir) để sau này bạn không gặp sự cố khi triển khai nó:

Các giá trị
$sql="insert into employee_detail( emp_image, employee_name, employee_address,
    employee_contact, employee_designation, employee_salary) 
values( 'images\\".$image."', '$_POST[employee_name]', '$_POST[employee_address]', '$_POST[employee_contact]',
    '$_POST[employee_designation]','$_POST[employee_salary]')";

Và đảm bảo rằng hình ảnh được tải thành công lên đường dẫn / dir hình ảnh mặc định đó .

CẬP NHẬT

Tôi cũng khuyên bạn nên sử dụng mysqli_* hoặc PDO và sử dụng prepare() phương pháp / chức năng để ngăn chặn việc tiêm sql.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQLNonTransientConnectionException:Không thể tạo kết nối với máy chủ cơ sở dữ liệu

  2. mysql dump - loại trừ một số dữ liệu bảng

  3. Kết nối không thành công:Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu:CÓ) từ hàm php

  4. JPA + Hibernate:Cách xác định ràng buộc có BẬT XÓA CASCADE

  5. mysql Không đọc được giá trị tự động tăng từ công cụ lưu trữ