私は、sqlsrv_fetch_array を使用していくつかの SQL データを csv ファイルにエクスポートする PHP ページに取り組んできました。csvファイルでデータを正しく取得するのに問題があります。スクリプトを実行すると、csv ファイルの出力は次のようになります。
<html>
<head>
<title>Page Title</title>
</head>
<body>
" "
" "
"CCCCCCC\SSSSS" 140211 B Insxxxxxx BBB Y N CCCCCCC\SSSSS Stevens_Dave Y
CCCCCCC\SSSSS 140211 W Insxxxxxx BBB Y N CCCCCCC\SSSSS Stevens_Dave Y
CCCCCCC\SSSSS 140411 R Intxxxxx Auxxx BBB Y N CCCCCCC\SSSSS Stevens_Dave Y
最初の「CCCCCC\SSSS」には、残りの情報には含まれていないにもかかわらず、まだ「」が付いていることに注意してください。また、何らかの理由で、csv ファイルの先頭に HTML を投稿しています。そこにヘッダーがありますが、それを機能させる方法を理解できないようです.コードを見て、ヘッダーをcsvファイルに追加する方法とともに問題がどこにあるのか教えていただけますか?コードは次のとおりです. .
<html>
<head>
<title>Page Title</title>
</head>
<body>
<?php
$userid = $_POST['userid']; //defined through a form
$serverName = "server1, 1433";
$connectionInfo = array("UID"=>"adminweb", "PWD"=>"adminweb", "Database"=>"dbname");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Set up and execute the query. */
$sql = "SELECT * FROM UserProfile u INNER JOIN UserTeam ut ON u.UserID = ut.UserOrTeam WHERE UserID LIKE '%xxxx%'";
$stmt = sqlsrv_query( $conn, $sql);
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
foreach($row AS $key => $value){
//If the character " exists, then escape it, otherwise the csv file will be invalid.
$pos = strpos($value, '"');
if ($pos !== false) {
$value = str_replace('"', '\"', $value);
}
$out .= '"'.$value.'",';
}
$out .= "\n";
}
sqlsrv_free_stmt($results);
sqlsrv_close($conn);
// Output to browser with the CSV mime type
header("Content-type: text/x-csv");
header("Content-Disposition: attachment; filename=testcsv.csv");
echo $out;
?>
</body>
</html>