PHP 코드를 사용하여 MySQL 데이터베이스에 이미지를 업로드하는 방법
PHPPHP 코드를 사용하여 MySQL 데이터베이스에 이미지를 업로드하는 방법
HTML 양식에서 데이터베이스에 이미지를 저장하려고합니다. 이 작업을 수행하기 위해 PHP 코드를 작성했습니다. 이 프로그램은 오류 메시지를 생성하지 않고 MySQL 데이터베이스에 이미지 데이터를 삽입하지 않습니다. 친절하게 확인하십시오. 여기 내 코드에서 발췌 부분을 공유하고 있습니다.
/*-------------------
IMAGE QUERY
---------------*/
$file =$_FILES['image']['tmp_name'];
if(!isset($file))
{
echo 'Please select an Image';
}
else
{
$image_check = getimagesize($_FILES['image']['tmp_name']);
if($image_check==false)
{
echo 'Not a Valid Image';
}
else
{
$image = file_get_contents ($_FILES['image']['tmp_name']);
$image_name = $_FILES['image']['name'];
if ($image_query = mysql_query ("insert into product_images values (1,'$image_name',$image )"))
{
echo $current_id;
//echo 'Successfull';
}
else
{
echo mysql_error();
}
}
}
/*-----------------
IMAGE QUERY END
---------------------*/
<form action='insert_product.php' method='POST' enctype='multipart/form-data' ></br>
File : <input type='file' name= 'image' >
</form>
해결법
-
==============================
1.먼저 이미지 열이 BLOB 유형인지 확인해야합니다.
먼저 이미지 열이 BLOB 유형인지 확인해야합니다.
나는 당신의 SQL 테이블에 대해 아무 것도 모른다. 그러나 나는 내 자신을 예제로 만들려고 노력할 것이다.
필드 id (int), image (blob) 및 image_name (varchar (64))이 있습니다.
따라서 코드는 다음과 같아야합니다 (ID는 항상 '1'이고이 mysql_query를 사용합니다).
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence! $image_name = addslashes($_FILES['image']['name']); $sql = "INSERT INTO `product_images` (`id`, `image`, `image_name`) VALUES ('1', '{$image}', '{$image_name}')"; if (!mysql_query($sql)) { // Error handling echo "Something went wrong! :("; }
여러 가지면에서 잘못하고 있습니다. mysql 함수를 사용하지 마십시오. PDO 또는 MySQLi를 사용하십시오. 디스크에 파일 위치를 저장하는 것도 고려해야합니다. 이미지를 저장하기 위해 MySQL을 사용하는 것은 Bad Idea ™라고 생각됩니다. 이미지와 같은 큰 데이터로 SQL 테이블을 처리하는 것은 문제가 될 수 있습니다.
또한 HTML 양식이 표준을 벗어났습니다. 다음과 같이 표시되어야합니다.
<form action="insert_product.php" method="POST" enctype="multipart/form-data"> <label>File: </label><input type="file" name="image" /> <input type="submit" /> </form>
쉬
파일을 처리하고 BLOB으로 저장하는 경우, mysql_real_escape_string ()을 사용하여 데이터를 이스케이프 처리해야합니다. 그렇지 않으면 구문 오류가 발생합니다.
-
==============================
2.몇 가지 세부 정보 만 있습니다.
몇 가지 세부 정보 만 있습니다.
`이미지 '블롭
$ image = addslashes (file_get_contents ($ _ FILES [ 'image'] [ 'tmp_name'])));
$ sql = "INSERT INTO`product_images` (`id`,`image`) VALUES ( '1', '{$ image}')";
-
==============================
3.
First, you should not try to store the image in the database. Because this is not the right method to do. IF you want to then code is. <?php include("config.php"); if(isset($_POST['but_upload'])){ $name = $_FILES['file']['name']; $target_dir = "upload/"; $target_file = $target_dir . basename($_FILES["file"]["name"]); // Select file type $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); // Valid file extensions $extensions_arr = array("jpg","jpeg","png","gif"); // Check extension if( in_array($imageFileType,$extensions_arr) ){ // Convert to base64 $image_base64 = base64_encode(file_get_contents($_FILES['file']['tmp_name']) ); $image = 'data:image/'.$imageFileType.';base64,'.$image_base64; // Insert record $query = "insert into images(image) values('".$image."')"; mysqli_query($con,$query); // Upload file move_uploaded_file($_FILES['file']['tmp_name'],$target_dir.$name); } } ?> <form method="post" action="" enctype='multipart/form-data'> <input type='file' name='file' /> <input type='submit' value='Save name' name='but_upload'> </form>
검색의 경우 $ sql = "id = 1 인 이미지에서 이미지 선택"; $ result = mysqli_query ($ con, $ sql); $ row = mysqli_fetch_array ($ result); $ image_src2 = $ row [ 'image']; ?>
-
==============================
4.INTO DB에 삽입하는 방법?
INTO DB에 삽입하는 방법?
<html> <head> <title>Uploads</title> </head> <body> <input type="file" name="file_array[]"/> <input type="file" name="file_array[]"/> <input type="file" name="file_array[]"/> <input type="submit" name="submit"/> </body> </html> <?php if(isset($_FILES['file_array'])) { $name_array = $_FILES['file_array']['name']; $tmp_name_array = $_FILES['file_array']['tmp_name']; $type_array = $_FILES['file_array']['type']; $size_array = $_FILES['file_array']['size']; $error_array = $_FILES['file_array']['error']; $dir = "slideshow"; for($i = 0; $i<count($tmp_name_array); $i++) { if(move_uploaded_file($tmp_name_array,"slideshow/".$name_array)) { echo $name_array[$i]."Upload is complete<br>"; } else { echo"Move_uploaded_file function failed for".$name_array[$i]."<br>"; } } } ?>
from https://stackoverflow.com/questions/17717506/how-to-upload-images-into-mysql-database-using-php-code by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
method = "post"enctype = "text / plain"은 호환되지 않습니까? (0) | 2018.09.11 |
---|---|
경고 : mysql_fetch_array ()는 매개 변수 1이 resource이고 boolean이 [duplicate] 인 것으로 가정합니다. (0) | 2018.09.11 |
PHP에서 두 날짜를 비교하는 방법 (0) | 2018.09.11 |
PHP로 큰 숫자로 작업하기 (0) | 2018.09.11 |
사용자의 시간대를 감지하는 방법은 무엇입니까? [복제] (0) | 2018.09.11 |