2011-06-13 2 views
0

일련의 이미지를 오버랩하여 결과를 blob 필드의 mysql 데이터베이스에 저장하려고합니다. 나는 이것을하기 위해 codeigniter의 'active-record'문법을 사용하고있다. 나는 다음과 같은 오류로 실행 해요 :mysql 데이터베이스에 PHP imagecopymerge 함수로 생성 된 이미지를 저장하는 방법

Error Number: 1064</p><p>You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id #48 WHERE `id` = '5'' at line 1 
UPDATE `users_thumbnails` SET `thumbnail` = Resource id #48 WHERE `id` = '5'  

누군가가 내가 잘못 뭘하는지 설명 할 수 있습니까? 감사!

$base = imagecreatefromjpeg('application/assets/images/vel1_bg.jpg'); 
    foreach($array as $key => $value){ 
       $item = imagecreatefrompng('application/assets/images/items/item' . $value[0] . '.png'); 
       list($width, $height, $type, $attr) = getimagesize('application/assets/images/items/item'. $value[0] . '.png'); 
       imagecopymerge($base, 
          $item, 
          $value[1], 
          $value[2], 
          0, 
          0, 
          $width, 
          $height, 
          100); 
       //imagedestroy($item); 
      } 

    $data = array('thumbnail' => $base); 
    $this->db->where('fbid', $this->session->userdata('id')); 
    $this->db->update('users_thumbnails', $data); 
+0

당신에게 imagejpg 또는 뭔가를 사용하여 이미지를 생성해야합니다. 그렇지 않으면 $ base는 단순히 이미지의 내용이 아니라 실제로 포인터 인 GD 리소스입니다. – venimus

+0

실행중인 전체 SQL 문장을 추가 하시겠습니까? ID # 48은 의심스러워 보입니다. – Colin

+0

@Colin, 데이터베이스에 종속 된 SQL을 생성하는 codeigniter의 활성 레코드 메서드를 사용하고 있습니다. MySQL에 대해 실행되는 전체 SQL 문은 오류 메시지 –

답변

3

사용하는 다른

... 
ob_start(); 
imagepng($base); 
$baseimg = ob_get_clean(); 
$data = array('thumbnail' => $baseimg); 
    ... 

당신이 편집

Resource id #48로 간단하게 변환하는 쿼리를 통과 할 때 $ 기지가 자동으로 이미지로 변환되지 않습니다 내용을 캡처

+0

에서 볼 수 있습니다. imagejpeg()에 대한 내 문제는 부울을 반환한다는 것입니다. 이미지를 브라우저로 내 보냅니다. –

+0

예, 죄송합니다 ob_을 사용해야합니다 * – venimus

관련 문제