2012-04-18 2 views
0

mysql 및 php 명령을 사용하여 두 개의 BLOB 필드를 한 행에서 업데이트하려고 할 때 문제가 있습니다.mysql update 2 blob을 한번에 작동하지 않습니다.

행에 BLOB를 삽입해도 문제가없는 것처럼 보입니다. 여기에 제가하는 일이 있습니다.

$logotemp = $_FILES['eventlogo']['tmp_name']; 
$thumbnailtemp = $_FILES['eventthumbnail']['tmp_name']; 
$openlogo  = fopen($logotemp, 'r'); 
$openthumbnail  = fopen($thumbnailtemp, 'r'); 
$logo = fread($openlogo, filesize($logotemp)); 
$logo = addslashes($logo); 
$thumbnail = fread($openthumbnail, filesize($thumbnailtemp)); 
$thumbnail = addslashes($thumbnail); 
fclose($openlogo); 
fclose($openthumbnail); 

그래서 저는 두 형태의 파일 입력을 가지고 있고, 그 파일을 읽고, 변수가 $ 로그 및 $ 축소판으로 다음으로 설정됩니다. 나는 다음 DB에이를 입력하려면 다음 명령을 사용합니다

$qry = "INSERT INTO $table (`Event Logo`, `Venue Logo`) VALUES ('$logo', '$thumbnail')"; 
$result = mysql_query($qry); 
if(!$result) { 
die(mysql_error()); 
} 

위의 작품 좋은, 나는 또한 채워지는 필드의 나머지 부분을 손질하고 있지만. 쿼리가 작동하고 이미지를 페이지로 반환 한 다음 해당 행의 다른 모든 정보와 함께 표시 할 수 있습니다.

그런 다음 행을 편집하려면 new.php라는 위에서 사용 된 php 파일의 복사본 인 edit.php라는 새 PHP 파일을 만들어야합니다.

이것은 양식이 동일하다는 것을 의미하며, 페이지가 표시되면 각 입력 값에 데이터베이스의 정보가 미리 채워지고 업로드 필드 옆에 로고와 축소판이 표시됩니다.

위의 코드와 거의 같은 코드를 사용하여 행을 업데이트하는 쿼리를 실행하면 항상 두 값 모두에 빈 값이 포함되므로 업로드 된 이미지는 본질적으로 삭제됩니다. 여기에 무슨이다 :

$id = $_POST['eventid'];   
    $logotemp = $_FILES['eventlogo']['tmp_name']; 
    $openlogo  = fopen($logotemp, 'r'); 
    $logo = fread($openlogo, filesize($logotemp)); 
    $thumbnailtemp = $_FILES['eventthumbnail']['tmp_name']; 
    $openthumbnail  = fopen($thumbnailtemp, 'r'); 
    $thumbnail = fread($openthumbnail, filesize($thumbnailtemp)); 
    fclose($openlogo); 
    fclose($openthumbnail); 

그래서 다시 한 번, 양식 필드는 여전히 eventlogo 및 eventthumbnail라고하고, 변수는 여전히 로고 및 $ 썸네일을 $. 그런 다음 다음 쿼리를 사용하여 행을 업데이트하십시오.

이번에 업데이트 된 다른 변수가 있습니다.

$result = mysql_query($qry); 
if(!$result) { 
die(mysql_error()); 
} 

쿼리가 실행되면 끝에있는 두 개의 이미지 BLOB 필드를 제외하고 원하는 다른 모든 필드가 업데이트됩니다. 업로드 필드의 코드를 복사하고 붙여 넣은 다음 해당 필드의 내용을 읽고 그 필드를 업데이트하기 위해 수동으로 쿼리를 입력하는 코드를 생각해 볼 때 나는 잘못된 정보를 볼 수 없습니다.

나는 분명한 뭔가를 놓치고 있습니까? 어떤 도움이라도 대단히 감사합니다.

덕분에, EDS가

+0

첫 번째. Parametrized SQL을 그대로 사용하면 문제를 유발할 수 있습니다. 둘째, edit.php에서 "addslashes '로고가 누락되었습니다. 적어도. 바이너리 데이터에는 SQL 쿼리를 엉망으로 만드는 문자가 포함되지만 mysql (및 다른 sql 서버)은 자동으로이를 받아들입니다. –

+0

죄송합니다. 내 코드에는 addslashes가 포함되어 있지만 여기에는 몇 가지 이유가 있습니다. 파일을 열 때 이진 파일로 읽는 것이 잘못되었을 것입니다. 그리고 그냥 비어 있습니다. – Eds

답변

0

캔트 내가 이것을 분류 코드를 찾을 수 있지만, 난 그냥 한 번에 하나씩 업데이트 결국 생각합니다.

관련 문제