2016-06-09 44 views
1

我有用SQL查詢數據創建CSV文件的代碼,然後通過電子郵件發送。使用PHP在服務器中創建CSV時出錯

function create_csv_string($data) { 
    mysql_connect("xxxx", "xxxx", "xxxx"); 
    echo mysql_error(); 
    mysql_select_db("xxxxx"); 
    $data = mysql_query("SELECT NOMBRE, TELEFONO, HORARIO, EMAIL FROM _LEADS WHERE ENVIADO = 0"); 
    echo mysql_error(); 
    if (!$fp = fopen('php://temp', 'w+')) { 
     return FALSE; 
    } else { 
     echo "entra"; 
    } 
    fputcsv($fp, array('Nombre', 'Telefono', 'Horario', 'Email')); 
    while ($line = mysql_fetch_assoc($data)) fputcsv($fp, $line); 
    rewind($fp); 
    return stream_get_contents($fp); 
} 

我的問題是,我在本地執行它,它的工作原理,但我上傳到服務器,它不起作用。我認爲問題出在!$fp = fopen('php://temp', 'w+')),但我不確定。

+0

請不要使用'mysql_ *'函數,因爲它們已被棄用和刪除。嘗試使用'mysqli_ *'或PDO。 –

+0

這個問題似乎是在MySQL服務器和文件權限。你可以將權限設置爲'777' **只需一會兒**並檢查?你可以使用諸如'chmod -R 777/var/www'之類的東西。 –

+0

你試過在fopen函數中給路徑賦予文件名嗎? – sAcH

回答

1

你需要做這樣的事情:

<?php 
    function create_csv_string() { 
     echo "entssssra?"; 
     $connection = mysqli_connect("**","**","**","**") or die("Cannot Connect to MySQL Server"); 
     $data = mysqli_query($connection, "SELECT NOMBRE, TELEFONO, HORARIO, EMAIL FROM _LEADS WHERE ENVIADO = 0"); 
     // Build the CSV: 
     $csv = "'Nombre', 'Telefono', 'Horario', 'Email'" . PHP_EOL; 
     while (false != ($line = mysqli_fetch_assoc($data))) 
      $csv .= array_values($line); 
     echo $csv; 
     return file_put_contents('temp.csv', $csv); 
    } 

而且你不需要$data作爲參數。