2014-11-14 2 views
1

나는 이상한 문제가있어 알아낼 수 없지만 어떤 도움을 주셔서 감사합니다!.MySQL은 BLOB 열 데이터를 저장하지 않습니다

문제는 내가 삽입 명령을 실행할 때 성공적으로 실행할 때 개체를 mysql 데이터베이스에 저장하려고하는데, 테이블을 검사 할 때 모든 열에 Blob 데이터 형식의 열이 있어야합니다. 여기

테이블

CREATE TABLE `uc_opportunities` (
`post_id` int(11) NOT NULL AUTO_INCREMENT, 
`org_id` int(11) DEFAULT NULL, 
`dateTime` int(11) NOT NULL, 
`subject` varchar(200) NOT NULL, 
`text` varchar(2000) DEFAULT NULL, 
`zipcode` varchar(10) NOT NULL, 
`location` varchar(100) DEFAULT NULL, 
`schedule` blob NOT NULL, 
PRIMARY KEY (`post_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8; 

이며, 여기에 삽입 기능입니다 : 삽입 기능을 위해서 var_dump를 사용하여 정확하게 일정을 받으면 삽입 일정 제외

public function addOpportunity($org_id) 
{ 
    global $mysqli,$emailActivation,$websiteUrl,$db_table_prefix; // 

    echo "inside add opportunity<br>"; 
    var_dump($this->schedule); 

    $stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."opportunities (
     org_id, 
     dateTime, 
     subject, 
     text, 
     zipcode, 
     schedule 
     ) 
     VALUES (
     ?, 
     ?, 
     ?, 
     ?, 
     ?, 
     ? 
     )"); 

    $schedule_serialized = serialize($this->schedule);  
    $stmt->bind_param("iissib", $org_id, $this->dateTime, $this->subject,$this->postText, $this->zipcode, $schedule_serialized); 
    $result = $stmt->execute(); 

    echo "execution result ".$result."<br>"; 
    $inserted_id = $mysqli->insert_id; 
    $stmt->close(); 

    $this->post_id = $inserted_id; 

    } 

모든 열, 내가 확인 ($ this-> schedule) 올바른 것입니다. 문제가 뭐라고 생각하니?

+0

어떻게 테이블을 점검하고 있습니까? – rjdown

+0

BLOB 열을 올바르게 사용하지 않았습니다. Blob은 Binary Large OBject 데이터 용이며 일반적으로 이미지와 같은 항목에 사용됩니다. 배열/객체의 직렬화는 이진 데이터가 아닙니다. 배열/객체를 나타내는 텍스트입니다. 'text' 유형의 컬럼을 사용하고 싶을 것입니다. 나는 schedule 배열/object/column에 무엇이 있는지 모르지만, 인덱스를 허용하고 쉽게 추가/편집 할 수 있도록 자체 테이블에 분할해야하기 때문에 실제로 "올바르게"하지는 않을 것입니다. . –

+0

이것을 확인하십시오. mysqli에서 LOB 데이터를 사용하는 방법을 자세히 설명합니다. https://blogs.oracle.com/oswald/entry/php_s_mysqli_extension_storing. 본질적으로 널 값을 바인드하고 데이터를 보내기 위해'send_long_data'를 사용해야합니다. 참고로,'text' 타입 컬럼은이 여분의 단계를 필요로하지 않습니다. –

답변

-1

덩어리가 이진 대형 개체를 같은 개체를 저장하는 데 사용되는 감사 등의 이미지, 파일, 문서를 포함하고 파일에 저장하기 전에 당신은 바이너리 형식으로 변환해야합니다.

0

blob 데이터 저장과 max_allowed_packet에 대한 mysql 설정을 참조하여 mysqli 문서를 확인하십시오. 이 바이너리 및 일정 열에 등 이미지, 오디오, 문서의 경우 모든

php.net mysqli

0

첫 번째는, 데이터를 변경 : 내가 당신의 직렬화 된 데이터가 얼마나 큰지 알 수 없기 때문에이 문제가 될 수 가능 longBlob 다음 insert 명령을 실행하십시오. 큰 이진 데이터 삽입으로 인해 어떤 시간은 작동하지 않습니다. 시도해보십시오.

관련 문제