我的方法$csv->getContent();
包含我的列名,“数据”是我要导入数据库的各个行。将我的各种 CSV 导入数据库时,下面的循环完美无缺。但是,当我在 CSV 中有一个包含 html 内容的列时,许多行可以正常导入,但有些行不能正常导入,我会收到SQLSTATE[HY093]: "Invalid parameter number: number of bound variables does not match number of tokens"
错误消息。
从我的研究中,我看到按照我在下面显示的方式做事应该正确地转义字符以避免需要添加斜杠,但它似乎没有任何区别。唯一有效的情况是,如果我这样做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();