我的方法$csv->getContent();
包含我的列名,'data'是我的單個行以導入到數據庫。下面的循環在將各種CSV導入數據庫時完美無缺地工作。但是,當我有一個在有HTML內容的CSV列時,很多行可以正常導入,但有一些不行,我得到了SQLSTATE[HY093]: "Invalid parameter number: number of bound variables does not match number of tokens"
錯誤。php將CSV導入到CSV,其中包含HTML內容
從我的研究中,我發現按照我在下面顯示的方式執行操作應該可以正確地轉義字符以避免使用addslashes,但它似乎沒有什麼區別。唯一一次這樣做的工作是如果我addslashes(addslashes($values));
但那種有點荒謬,它將我的內容留在數據庫與\\\
之前適用的字符。
我錯過了一個步驟,或者我只是卡住了。我看到它的方式,我應該能夠「無懈可擊」我的內容,以便每次都能將其加入到我的數據庫中。
$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 – 2013-04-23 02:35:36
並在你的循環。它真的是'$ content ['columns']'或應該是'$ value ['columns']'? – 2013-04-23 02:37:21
$ value [columns]不存在。 $ content是一個多維數組。對不起,但這些迴應並沒有解決我的問題。我對使用預處理語句執行這些行非常感興趣。謝謝 – 2013-04-23 02:46:14