0
我想要做的是將SQL查詢導出到.csv文件,以便用戶可以下載它。查詢或多或少是這樣的:在drupal中創建.csv /文本文件
SELECT * FROM {registered} WHERE pending = 'Y'
我想要查詢的結果將被放在一個.csv文件,我也想在問題中的行與未決=「N」和completed_time更新= NOW()。
我也希望標題包含在頂部。
是否有任何標準的drupal函數應該使用或者我應該簡單地使用file_create_filename函數,然後以普通的php方式創建文件?
我想這樣做是這樣的:不幸的是
// Save query data
$result = db_query("SELECT *
INTO OUTFILE '/tmp/myfile-raw'
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
FROM {plan_tax_red_registered}");
if (!$result) {
echo 'Failed saving query\n';
return ;
}
$file = fopen("/tmp/myfile-raw","rw+");
if (!$file) {
echo 'Failed opening again\n';
return ;
}
// Might be uneccessary but database fields can change
$columns = db_query("SHOW FIELDS FROM {plan_tax_red_registered}");
$list_of_columns = array();
while ($res = db_fetch_array($columns)) {
$list_of_columns[] = $res['Field'];
}
$header = implode(";", $list_of_columns);
// Get the contents from the raw file
$old_content = file_get_contents($file);
// Save result
$csv_file = fopen("/tmp/result.csv","rw+");
if (!$csv_file) {
echo "Failed opening csv file\n";
return;
}
fwrite($csv_file, $header . "\n" . $old_content);
fclose($file);
fclose($csv_file);
,我無法打開CSV文件:(
我知道我可以簡單地這樣做是爲了顯示文件:
function plan_tax_red_export_to_excel($result, $filename = 'myfile.csv'){
drupal_set_header('Content-Type: text/csv');
drupal_set_header('Content-Disposition: attachment; filename=' . $filename);
$count = mysql_num_fields($result);
for($i = 0; $i < $count; $i++){
$header[] = mysql_field_name($result, $i);
}
print implode(';', $header) ."\r\n";
while($row = db_fetch_array($result)){
foreach($row as $value){
$values[] = '"' . str_replace('"', '""', decode_entities(strip_tags($value))) . '"';
}
print implode(';', $values) ."\r\n";
unset($values);
}
}
但是我想更新內容(將is_pending字段設置爲'N'並且completed_time設置爲NOW())。
你有什麼想法?任何幫助表示讚賞:)
親切的問候, 塞繆爾
謝謝!我會看看那個! – user1028037 2012-02-03 13:37:25