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가
첫 번째. Parametrized SQL을 그대로 사용하면 문제를 유발할 수 있습니다. 둘째, edit.php에서 "addslashes '로고가 누락되었습니다. 적어도. 바이너리 데이터에는 SQL 쿼리를 엉망으로 만드는 문자가 포함되지만 mysql (및 다른 sql 서버)은 자동으로이를 받아들입니다. –
죄송합니다. 내 코드에는 addslashes가 포함되어 있지만 여기에는 몇 가지 이유가 있습니다. 파일을 열 때 이진 파일로 읽는 것이 잘못되었을 것입니다. 그리고 그냥 비어 있습니다. – Eds