>  기사  >  백엔드 개발  >  PHP가 mysql Database_php 팁에 이미지를 저장하지 못하는 문제에 대한 솔루션

PHP가 mysql Database_php 팁에 이미지를 저장하지 못하는 문제에 대한 솔루션

WBOY
WBOY원래의
2016-05-16 20:27:18935검색

이 기사의 예에서는 PHP가 MySQL 데이터베이스에 사진을 저장하지 못하는 문제에 대한 솔루션을 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

사진을 데이터베이스에 저장하는 것은 현명한 생각이 아닙니다. 우리 대부분은 사진을 서버에 저장한 다음 사진 주소를 데이터베이스에 저장하면 매번 사진 주소만 읽으면 됩니다. 표시하려고 하는데, mysql 데이터베이스에 사진을 저장하는 문제에 대한 해결방법은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
require 'class/db.php'; $fileName = "a1.jpg"
$fp = fopen($fileName, "r")
$img = fread($fp, 파일 크기($fileName))
fclose($fp)

$db->execute("db2.testimg(`img`) 값 삽입 ​​('$img') ;");

오류 보고서:

SQL 구문에 오류가 있습니다. '`?绶q?仳!??? ?1丶> ?'^ W Z4in??T春??????U?' 1번째 줄

코드는 다음과 같습니다.


코드 복사 코드는 다음과 같습니다.
$img = fread($fp, filesize($fileName));
$img = 속눈썹 추가($img)
계속해서 오류 신고, 각종 검색, 바이두 검색결과가 다 덧글이거나 아예 덧글이 전혀 없는 건 정말 말도 안되는 소리입니다.


코드 복사 코드는 다음과 같습니다.
base64_decode
$img = base64_encode($img);
삽입 성공, 이미지 파일 17.0k, 나와서 base64_decode 수행, 표시 정상, 16진수 방식 찾았습니다:


코드 복사 코드는 다음과 같습니다.
$img = bin2hex($img);
작동하고 출력은 복호화할 필요도 없고 데이터베이스 용량도 25K라서 base64보다 더 당황스럽네요. 나중에 다시 검색해 보니 phpmyadmin에서 직접 업로드한 이미지 파일을 사용할 수 있다는 것을 알게 되었습니다. . 파일이 base64보다 작으며 파일 크기는 12.8k입니다.

phpmyadmin 소스코드를 살펴보면 common.lib.php 파일 183에 마법같은 기능이 있는데, 코드는 다음과 같습니다.


코드 복사 코드는 다음과 같습니다.
function PMA_sqlAddslashes($a_string = '', $is_like = false, $ crlf = false , $php_code = false)
{
If ($is_like) {
           $a_string = str_replace('', '\\', $a_string)
} 다른 {
          $a_string = str_replace('', '\', $a_string)
}

If ($crlf) {
         $a_string = str_replace("n", 'n', $a_string)
         $a_string = str_replace("r", 'r', $a_string)
          $a_string = str_replace("t", 't', $a_string)
}

If ($php_code) {
          $a_string = str_replace(''', ''', $a_string)
} 다른 {
          $a_string = str_replace(''', '''', $a_string)
}

$a_string 반환
} // 'PMA_sqlAddslashes()' 함수 끝 $img = PMA_sqlAddslashes($img);
파일 크기는 12.8K로 phpmyadmin과 동일한 크기입니다.
예를 들어 frontend image.html의 경우 코드는 다음과 같습니다.


코드 복사 코드는 다음과 같습니다.
사진 업로드

파일:
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.