나는 이상한 문제가있어 알아낼 수 없지만 어떤 도움을 주셔서 감사합니다!.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) 올바른 것입니다. 문제가 뭐라고 생각하니?
는
어떻게 테이블을 점검하고 있습니까? – rjdown
BLOB 열을 올바르게 사용하지 않았습니다. Blob은 Binary Large OBject 데이터 용이며 일반적으로 이미지와 같은 항목에 사용됩니다. 배열/객체의 직렬화는 이진 데이터가 아닙니다. 배열/객체를 나타내는 텍스트입니다. 'text' 유형의 컬럼을 사용하고 싶을 것입니다. 나는 schedule 배열/object/column에 무엇이 있는지 모르지만, 인덱스를 허용하고 쉽게 추가/편집 할 수 있도록 자체 테이블에 분할해야하기 때문에 실제로 "올바르게"하지는 않을 것입니다. . –
이것을 확인하십시오. mysqli에서 LOB 데이터를 사용하는 방법을 자세히 설명합니다. https://blogs.oracle.com/oswald/entry/php_s_mysqli_extension_storing. 본질적으로 널 값을 바인드하고 데이터를 보내기 위해'send_long_data'를 사용해야합니다. 참고로,'text' 타입 컬럼은이 여분의 단계를 필요로하지 않습니다. –