使用PHP将数据从SQl导出到Excel

使用PHP将数据从SQl导出到Excel,php,mysql,excel,Php,Mysql,Excel,所以管理员可以通过选择我存储在col[]中的复选框来选择要导出到excel的内容。。。 这是我的导出代码 session_start(); $HOST = 'localhost'; $USERNAME = 'root'; $PASSWORD = ''; $DB = 'fyp_db'; $link = mysqli_connect($HOST, $USERNAME, $PASSWORD, $DB); if (is_array($_POST['col'])) { $sql = "SEL

所以管理员可以通过选择我存储在col[]中的复选框来选择要导出到excel的内容。。。 这是我的导出代码

 session_start();
$HOST = 'localhost';
$USERNAME = 'root';
$PASSWORD = '';
$DB = 'fyp_db';

$link = mysqli_connect($HOST, $USERNAME, $PASSWORD, $DB);

if (is_array($_POST['col'])) {
    $sql = "SELECT ";
    foreach ($_POST['col'] AS $value) {
        $sql .= "{$value}, ";
    }
    $sql = substr($sql, 0, -2);
    $sql .= " FROM account, coursedetail, coursecategory";  
    /*echo "sql= " . $sql . "<br /><br />\n";*/
} else {
    echo "No column was selected<br /><br />\n";
}

function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; }

$filename = "website_data.xls"; 
header("Content-Type: text/plain"); 
$flag = false; 
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
while(false !== ($row = mysql_fetch_assoc($result))) { 
    if(!$flag) { 
    // display field/column names as first row 
    echo implode("\t", array_keys($row)) . "\r\n"; 
    $flag = true; 
        } 
        array_walk($row, 'cleanData'); 
        echo implode("\t", array_values($row)) . "\r\n"; 

        }
我的错误是

警告:mysql_fetch_assoc希望参数1是资源,对象在第28行的C:\xampp\htdocs\project\export_successful.php中给出


为什么

你把mysqli和mysql调用搞混了。这两个库不兼容,一个库返回的句柄/语句不能在另一个库中使用

$result = mysqli_query($link, $sql) or die(mysqli_error($link));
               ^--- note the 'i'
while(false !== ($row = mysql_fetch_assoc($result))) { 
                             ^--- note the LACK of an 'i'

也许你的SQL是无效的。请用echo发布您的SQL查询。而且你也不用mysql\u real\u escape\u字符串之类的东西!当我回显$sql时;我看到这个sql=选择姓名、联系电话、地址、出生日期、电子邮件、标题、帐户类别、coursedetail、CourseCategory sql是有效的,但我认为问题在于Marc B所说的mysql和mysqli。当我添加i,它确实工作并成功地提取了数据,但它说警告:无法修改标题信息-标题已经由C:\xampp\htdocs\project\export\u successful.php中的C:xampp\htdocs\project\export\u successful.php第26行中的输出发送,在标题调用之前,您不能有任何输出,否则会出现该错误。