1

设想:

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

Access中的注册表:

Roll_Num,Course,Marks,Discipline,Session

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

问题:

如您所见,记录的每个值都重复两次。请检查我的代码有什么问题!!

4

1 回答 1

2

重复值是因为您没有指定 a fetch_stylein $results->fetch([fetch_style])。根据手册 - h​​ttp: //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)) {

或者

while ($row = $results->fetch(PDO::FETCH_NUM)) {
于 2012-12-27T11:04:34.377 回答