我正在尝试导出CSV文件,这在导出时效果很好。但是当我打开我的csv文件时会出现一些问题,有一些文本更改为" ??????"。但在phpmyadmin中,一切都很好。该文本由utf-8编码。
这是我的代码
<?php
$day = $_POST['day'];
$starttime = "'".$day.' 00:00:00'."'";
$stoptime = "'".$day.' 23:59:59'."'";
$uname = "*********";
$pass = "*********";
$host = "*********";
$database = "*********";
$connection=mysql_connect($host,$uname,$pass);
echo mysql_error();
$selectdb=mysql_select_db($database) or die("Database could not be selected");
$result=mysql_select_db($database)or die("database cannot be selected <br>");
$output = "";
$table = "***********";
$sql = mysql_query("SELECT * FROM $table WHERE applytime BETWEEN $starttime AND $stoptime");
$columns_total = mysql_num_fields($sql);
$rowcount = mysql_num_rows($sql);
if($rowcount >= 1)
{
for ($i = 0; $i < $columns_total; $i++) {
$heading = mysql_field_name($sql, $i);
$output = '"'.$heading.'",';
}
$output .="\n";
while ($row = mysql_fetch_array($sql)) {
for ($i = 0; $i < $columns_total; $i++) {
$output .='"'.$row["$i"].'",';
}
$output .="\n";
}
$filename = "myFile.csv";
header("content-type:application/csv;charset=UTF-8");
header('Content-Disposition: attachment; filename='.$filename);
echo $output;
exit;
}
else
{
echo("There is no record Today");
}
?>
请帮助谢谢。
答案 0 :(得分:1)
我没有看到对mysql_set_charset
功能的调用。
mysql_set_charset('utf8');
这种疏忽是疏忽吗?或者是故意省略的,因为已经确认客户端字符集没有设置得恰当?
当mysql_
和mysqli
接口都可用时,为什么要编写使用不推荐的 PDO
函数的代码?为什么我们通过将可能不安全的值合并到SQL文本中来编写易受SQL注入攻击的代码?