首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php将CSV导入MySQL,其中CSV包含HTML内容

php将CSV导入MySQL,其中CSV包含HTML内容
EN

Stack Overflow用户
提问于 2013-04-23 10:24:06
回答 2查看 819关注 0票数 1

我的方法$csv->getContent();包含我的列名,'data‘是我要导入到数据库中的单个行。在将我的各种CSV导入数据库时,下面的循环可以完美地工作。但是,当我在CSV中有一个包含html内容的列时,许多行导入得很好,但有些行却不能导入,并且我得到了SQLSTATE[HY093]: "Invalid parameter number: number of bound variables does not match number of tokens"错误。

从我的研究中,我发现我下面展示的方法应该正确地转义字符,以避免需要加斜杠,但这似乎没有什么不同。唯一有效的时候是,如果我addslashes(addslashes($values));,但这是一种荒谬,它留下我的内容在数据库中的\\\在适用的字符之前。

我是漏掉了一步还是我卡住了。在我看来,我应该能够“防弹”我的内容,使其每次都进入我的数据库。

代码语言:javascript
复制
$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();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-24 01:39:29

好了,我已经找到了我的问题的答案。我建立了一个供个人使用的小应用程序,在那里我可以保存我在网上列出的拍卖内容。有些内容是旧的,并且包含格式错误的html,所以当解析csv并导入数据库时,格式错误的html可能真的会把事情搞砸。然而,经过更多的研究和阅读,PDO的"bindParam“和"execute”方法允许无缝地导入内容,无论html格式多么糟糕。这就是我如何组织我的测试查询,然后继续尝试将混乱的html连接到数据库。

代码语言:javascript
复制
$sql = $objDb->prepare('UPDATE `autolist_html` SET `value` = :html WHERE entity = "'.$entity[1].'"');
$sql->bindValue(':html',$_POST[$entity[1].'_html'],PDO::PARAM_STR);
$sql->execute();    
票数 0
EN

Stack Overflow用户

发布于 2013-04-23 10:27:48

我不喜欢你的代码。如果有数以千计的数据,你循环每个数据,然后插入到数据库中,该怎么办?存在将csv文件导入数据库表的mysql查询。

来源:how-to-import-csv-file-to-mysql-table

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16159857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档