使用带有OOP aproach的PHP的MySQL文件(mysqli-> connect等)

时间:2014-05-13 22:03:45

标签: php mysql oop csv mysqli

我正在尝试使用带有OOP方法的php直接从mysql表创建一个csv文件。这是我的代码:

$mysqli = new mysqli($host, $user, $pass, $database);

// Checking connection.
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$query = 'SELECT * FROM table';
$result = $mysqli->query($query);

while ($row = $result->fetch_array()) {
    $rows[] = $row;
}

    $array = "";
foreach($rows as $row) {
    $array .= "\"".$row["genus"].",".$row["species"]."\",";
}

$list = array($array);

header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename=export.csv');

$file = fopen("php://output","w");

foreach ($list as $line) {
    fputcsv($file,explode(',',$line));
}

fclose($file);
// Free result set.
$result->close();

// Close connection.
$mysqli->close();

创建数组时,我的问题在于以下部分:

    $array = "";
foreach($rows as $row) {
    $array .= "\"".$row["genus"].",".$row["species"]."\",";
}

因为当我做一个print_r($ list);我没有收到预期的数组: 数组([0] =>“homo,sapiens”,[1] =>“homo,erectus”, [2] => “homo,ergaster”,)

但这一个: 数组([0] =>“homo,sapiens”,“homo,erectus”,“homo,ergaster”,)

而且当我手动创建数组时

$list = array("homo,sapiens","homo,erectus","homo,ergaster");

它工作得很好,我收到了正确的csv文件。

如果有人能帮助我,我会很感激,解释一下我做错了什么以及我应该怎么做来修复代码。

1 个答案:

答案 0 :(得分:1)

那是因为您将$array视为字符串,而不是数组。 这应该有效:

$array = array();
foreach($rows as $row) {
    $array[] = "\"".$row["genus"].",".$row["species"]."\",";
}

我认为您期望$list = array($array);行能够将逗号分隔的字符串神奇地转换为数组中的各个元素,但它并没有。