通过php将Access数据库导出到文本文件中

时间:2012-12-27 09:47:52

标签: php pdo ms-access-2010

情景:

我从access数据库导出一个名为“Registration”的表,并使用pdo写入php中名为“isl.txt”的文件。字段用“,”分隔,记录用“\\”分隔(我知道它应该是“\ n”以方便但它不能在文本文件中换一行。不知道为什么!!所以我选择了“\” \“)

访问中的注册表:

Roll_Num,当然,商标,学科,会话

0,CS-101,89,CS,Fall94

0,CS-102,70,CS,Fall94

0,CS-103,59,CS,Fall94

代码:

$fl = fopen('isl.txt', 'w');
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=D:\Islamabad.mdb;Uid=;Pwd=;");
$results = $db->query("select * from `Registration`");

while ($row = $results->fetch()) {

foreach ($row as $value) {
   $lastv = end($row);

    if ($value != $lastv){

        fwrite($fl, $value.",");
        }

}
 fwrite($fl, $value."\\");
}
 fclose($fl);

输出:

0,0,CS-101,CS-101,89,89,CS,CS,Fall94 \ 0,0,CS-102,CS-102,70,70,CS,CS,Fall94 \ 0,0 ,CS-103,CS-103,59,59,CS,CS,Fall94

问题:

正如您所见,每个记录值都重复两次。请检查我的代码是否错误!!

1 个答案:

答案 0 :(得分:2)

重复值是因为您未在fetch_style中指定 $results->fetch([fetch_style]) 。根据手册 - http://php.net/manual/en/pdostatement.fetch.php - 未指定 fetch_style 时,默认为to value of PDO::ATTR_DEFAULT_FETCH_MODE (which defaults to PDO::FETCH_BOTH)

  

PDO :: FETCH_BOTH (默认值):返回由两列索引的数组   结果集中返回的名称和0索引列号

尝试更改为 -

while ($row = $results->fetch(PDO::FETCH_ASSOC)) {

OR

while ($row = $results->fetch(PDO::FETCH_NUM)) {