2013-07-20 11 views
2

YouTube의 "MySQL 데이터베이스 내부 이미지 업로드/저장"에 대한 튜토리얼을 수행했지만 2 일 동안이 문제가 발생했으며 지난 2 일 동안이 문제를 디버깅하려고 시도했지만, 그러나 그것이 무엇인지 알 수는 없습니다.이미지 업로드

<?php 
// connect to database 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("databaseimage") or die(mysql_error()); 

// file properties 
$file = $_FILES['image']['tmp_name']; 

if (!isset($file)) 
    echo "Please select an image."; 
else 
{ 
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); 
$image_name = addslashes($_FILES['image']['name']); 
$image_size = getimagesize($_FILES['image']['tmp_name']); 

if ($image_size==FALSE) 
    echo "That's not an image."; 
else 
{ 
    if (!$insert = mysql_query("INSERT INTO store VALUES ('', '$image_name',  
    '$image')")) 
     echo "Problem uploading image."; 
    else 
    { 
    $lastid = mysql_insert_id(); 
    echo "Image uploaded.<p />Your image:<p /><img src=get.php?id=$lastid>"; 
    } 

} 
} 
?> 

나는 .PNG 또는 .JPEG 파일을 업로드하려고 할 때마다이 코드는 "다른"케이스의 내부에 "만약"사건을 명중하고 그와 에코를 통과하지 않습니다 여기에

코드입니다 이미지 업로드 문제. " 튜토리얼에서했던 것처럼 정확하게 튜토리얼에있는 사람이 "if"케이스를 통과하고 실제로 마지막 부분을 치고 "Image uploaded"를 울립니다.

누구든지 문제가 무엇인지 알 수 있습니까?

답변

1

것은 그것이 당신의 쿼리가 실패로 아마 if 상태로 들어가는 것보다 이미지을 업로드 문제의 당신에게 오류를 던지고 경우에, 당신은 무엇이 당신의 쿼리가 실패 할 경우 친절한 메시지를 읽을 mysql_error()를 사용해야합니다.

echo "Problem uploading image.".mysql_error($connection); 
//Replace connection with the connection var 

참고 : 코드 또한 mysql_() 사용되지 않는 사용 완전히 더럽습니다. 그래서 시작은 mysqli_() 학습 또는 PDO는 또한 당신의 코드가 더 나은 데이터를 살균하고 또한

당신은 파일 확장자를 확인하고되지 않은 데이터베이스에서 사용자가 제공하는 데이터를 삽입하기 전에 문자열을 탈출, SQL 주입하는 경향이있다 사용자가 업로드 한 파일 크기이므로 보안상의 이유로 서버에서 업로드 한 대용량 파일을 저장해야합니다.

+0

이렇게 오류가 표시됩니다. "잘못된 정수 값 : ''for column '행 1의 id'. 그래서 '$ image_name'전에 빈 칸에 임의의 숫자를 넣으면 제대로 작동하지만 데이터베이스를 통해 ID를 PRIMARY로 설정했기 때문에 숫자를 넣을 필요가 없다고 생각했습니다. 자동 증가. 이 문제를 해결하려면이 빈칸에 무엇을 넣어야합니까? (나는 그 느낌이 옳지 않기 때문에 그 안에 임의의 숫자를 유지하고 싶지 않다.) – user2512888

+0

@ user2512888 ID가 AI 인 경우 INSERT INTO store (image_name_column_name)를 사용하는 것보다 열 이름없이 삽입을 사용하고있다. , another_column_name) VALUES ('$ image_name', '$ image') "''실제 이름으로 열 이름 바꾸기 ' –

+0

알겠습니다, 선생님, 외계인 님은 마술사입니다. 그러나 정말로이 모든 것을 어떻게 배우고 많은 지식을 갖고 있습니까? (모든 문서를 읽었습니까?) Force의 방법을 가르쳐주세요. – user2512888