CSV 输出重复


CSV output is duplicated

我正在尝试以csv格式输出数据库选定的行,但它输出的是重复的值而不是单个值。我希望它有列,列下方的值。输出:onlineId,paramId,paramValue

4cd87b00dddca780fcaf66d0108b25f6,4cd87b00dddca780fcaf66d0108b25f6,1,1,11,11

下面的代码:

$output = fopen('php://output', 'w');
fputcsv($output, array('onlineId', 'paramId', 'paramValue'));
$host = "localhost";
$database = "keytarget";
$username = "root";
$password = "";
$con = new PDO("mysql:host=" . $host . ";dbname=" . $database, $username, $password);
//Run our query
$sql = "
        SELECT
            ui.onlineId, uin.paramId, uin.paramValue
        FROM
            v5_userinfo ui
        JOIN
            v5_userinfo_number uin
        ON
            uin.userId = ui.id
        ;
        ";
$statement = $con->prepare($sql);
$statement->execute();
while ($row = $statement->fetch()) {
    fputcsv($output, $row);
}
当您

检索数据时,它会为您提供关联数组和普通数组之间的混合 更多信息。所以你的$row变量是这样的:

array(
   [0]=>4cd87b00dddca780fcaf66d0108b25f6
   [onlineId]=>4cd87b00dddca780fcaf66d0108b25f6
   [1]=>1
   [paramId]=>1
   [2]=>11
   [paramValue]=>11
)

因此,您的解决方案可能是:

while ($row = $statement->fetch()) {
    $array=array($row[0],$row[1],$row[2]);
    fputcsv($output, $array);
}

或者更简单的:

while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
    fputcsv($output, $row);
}