PDO批量导入脚本

时间:2013-10-28 10:46:38

标签: sql pdo import bulkinsert

我正在尝试创建一个导入脚本,我有一个示例工作后跟着[一些过时和不安全的教程]但是本教程不使用PDO。虽然这个表单只能由站点管理员使用,但我觉得我应该使用PDO来帮助防止SQL注入。虽然我不确定如何为PDO语句更改此内容?

谢谢

  (I already have my DB connection up here)

if ($_FILES['csv']['size'] > 0) {

//get the csv file 
$file = $_FILES['csv']['tmp_name'];
$handle = fopen($file, "r");


do {
    if ($data[0]) {
        $sql = "INSERT INTO users_tbl (username, staff_id, dept,  area) VALUES 
            ('" . addslashes($data[0]) . "',
             '" . addslashes($data[1]) . "', 
             '" . addslashes($data[2]) . "'         
            )
            ";
        $result = pg_query($sql);
                }
} while ($data = fgetcsv($handle, 1000, ",", "'"));
//redirect 
header('Location: import.php?success=1');
die;
}

1 个答案:

答案 0 :(得分:0)

事实上,PDO和CSV之间没有一点联系。

每个PHP用户都必须发展自己的能力来分离事务。您有两个任务:

  1. 从CSV文件中读取一行到数组
  2. 将数组数据存储在数据库中。
  3. 这两项任务完全无关。阅读完csv后,你可能会在任何地方疼痛。并且CSV部分不会改变一点。您可以存储任何其他来源的PDO数据 - 并且PDO代码不会改变一点。

    因此,您实际需要学习的只是如何使用PDO 。那么,你去https://stackoverflow.com/tags/pdo/info

    另一种选择是使用LOAD DATA INFILE查询,这种方法更适合批量导入