내 방법 $csv->getContent();
에 내 열 이름이 포함되어 있으며 '데이터'는 데이터베이스로 가져올 개별 행입니다. 아래의 루프는 내 다양한 CSV를 데이터베이스로 가져올 때 완벽하게 작동합니다. 그러나 html 콘텐츠가있는 CSV 열이있을 때 많은 행을 가져올 수 있지만 일부는 그렇지 않습니다. 따라서 SQLSTATE[HY093]: "Invalid parameter number: number of bound variables does not match number of tokens"
오류가 발생합니다.php CSV에 HTML 형식의 CSV가 포함되어 있습니다.
내 연구에서, 내가 아래에 표시된 방식대로 일하는 것이 addslashes의 필요성을 피하기 위해 문자를 올바르게 이스케이프 처리해야한다고 생각하지만 차이를 만드는 것처럼 보이지 않습니다. 이 작업을 수행하는 유일한 시간은 내가 addslashes(addslashes($values));
일 뿐이지 만 어리석은 일이며 해당 내용 앞에 \\\
이라는 데이터베이스에 내 콘텐츠가 남습니다.
여기에 단계가 없거나 막 붙어 있습니까? 내가 보는 방식대로, 매번 내 DB에 그것을 얻기 위해 내 콘텐츠를 "방탄"시킬 수 있어야합니다.
$this->db->exec("SET CHARACTER SET utf8");
$this->db->beginTransaction();
$content = $csv->getContent();
foreach($content['data'] as $key => $value) {
$sql = "INSERT INTO `".$destination_table."` (`";
$sql .= implode("`, `", $content['columns']);
$sql .= "`) VALUES (";
$sql .= implode(", ", array_fill(0, count($content['columns']), "?"));
$sql .= ")";
$statement = $this->db->prepare($sql);
$statement->execute($value);
}
$this->db->commit();
이 스레드를 살펴 봅니다. http://stackoverflow.com/questions/10170913/invalid-parameter-number-number-of-bound-variables-does-not-match-number-of-tok –
그리고 반복하십시오. 그것은 정말로 $ content [ 'columns']'이거나'$ value [ 'columns']'이어야만 하는가? –
$ value [columns]이 존재하지 않습니다. $ content는 다차원 배열입니다. 죄송합니다. 그러나이 답변은 제 질문을 다루지 않습니다. 필자는 준비된 명령문을 사용하여이 행을 실행하는 데 매우 관심이 있습니다. 감사합니다 –