Ben bu tablodaki tüm verileri çıktılar dışında çalışıyor bir veritabanı tablosundan, bir CSV dosyası oluşturmak için bir komut dosyası var ve ben sadece kullanıcı oturum açmış geçerli için çıkış verilerine ihtiyacım var. Kullanıcıların, onlar okudum kitapların listelerini depolamak, vb okumak istediğiniz edebilmek için geliştiriyorum uygulaması ve ben onlara Excel'e aktarabilirsiniz kitaplarının bir listesini indirmek için izin vermek mümkün olmak istiyorum örneğin. (CSV dosyası OpenOffice yanı sıra MS Excel gibi vs de var olduğunu göz önüne alındığında, bunun için en iyi seçenek olabilir misiniz?)
Ben şimdiki oturum açmış kullanıcıya ait yalnızca kayıtları seçmek için bir seçme sorgusu kullanmak için geçici bir tablo oluşturmak için gerekli olduğunu anladım. I WHERE username='$session->username'
kullanılarak geçerli kullanıcı için veri erişebilirsiniz.
Ben o zaman CSV dosyasında kullanılmak üzere çıkış verileri ve daha sonra tabloyu bırak o sorguları çalıştırmayı deneyin önce geçici tablo oluşturmak kadar kolay olacağını düşündüm, ama ben geçici ile tekrar CSV oluşturma kodunu denedim tablo CSV şeyler önce oluşturulan ve yeniden üretilen CSV dosyası tüm kullanıcılar için tüm kayıtları içerir.
Orada veritabanı bağlantı özelliklerini belirleyen bir yapılandırma dosyası, ama aynı zamanda tablo değişkeni $table
olarak, dosya oluşturmak için kullanılacak, ve bu ben 'geçici tablo adı olması için kurdum oluşturmak için çalışıyorum.
Bu elimdeki kodu:
<?
$link = mysql_connect($host, $user, $pass) or die("Cannot connect to the database." . mysql_error());
mysql_select_db($db) or die("Can not connect.");
$temp = mysql_query("CREATE TEMPORARY TABLE books_temp SELECT * FROM books WHERE username='$session->username'");
$tempresult = mysql_query($temp);
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field']."; ";
$i++;
}
}
$csv_output .= "\n";
$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j]."; ";
}
$csv_output .= "\n";
}
$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("d-m-Y") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
$query = 'DROP TABLE books_temp';
$result = mysql_query($query);
exit;
?>
Bu mükemmel tüm verileri çıktısı, ama geçici tablo ile kullanmaya çalıştığınızda hala tüm verileri çıktılar çalışır. Bu arada, ben de ucundan geçici tablo bırakma talimatı kaldırmak denedim, ve bu herhangi bir fark yapmaz. Geçici tablonun oluşturulan sanki Ayrıca, PhpMyAdmin kontrol, görünmüyor. Açıkçası burada yanlış bir şey yaptığını ya da bir şey eksik, ama ne hiçbir fikrim yok ediyorum.