Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和OOP aproach(mysqli->;connect等)从MySQL获取CSV文件_Php_Mysql_Oop_Csv_Mysqli - Fatal编程技术网

使用PHP和OOP aproach(mysqli->;connect等)从MySQL获取CSV文件

使用PHP和OOP aproach(mysqli->;connect等)从MySQL获取CSV文件,php,mysql,oop,csv,mysqli,Php,Mysql,Oop,Csv,Mysqli,我正在尝试使用php和OOP方法直接从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 *

我正在尝试使用php和OOP方法直接从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"]."\",";
}
因为当我打印($list)时;我没有收到预期的阵列: 数组([0]=>“智人,智人”,[1]=>“直立人,智人”, [2] =>“人类,麦加斯特人”

但是这个: 数组([0]=>“智人”、“直立人”、“直立人”、“厄加斯特人”)

此外,当我手动创建数组时

$list = array("homo,sapiens","homo,erectus","homo,ergaster");
它工作正常,我收到了正确的csv文件


如果有人能帮助我,解释我做错了什么,以及我应该如何修复代码,我将不胜感激。

这是因为您将
$array
视为字符串,而不是数组。 这应该起作用:

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

我想你期待的是
$list=array($array)行将逗号分隔的字符串神奇地转换为数组中的单个元素,但事实并非如此。

亲爱的@Muer,正如Freddy Mercury所说:PHP是一种魔法,不是吗?(:谢谢你的帮助。它工作得很好。我知道这部分有点不对劲,但我不知道到底是什么。我必须更好地内化这些概念(字符串、数组、变量等)。