Bir CSV dosyası içine veritabanı tablo başlığı bilgi almak için nasıl

4 Cevap php

Ben kod aşağıda belirtilen parça ile, veritabanına bağlanmak ve bir tablonun mevcut durumunu almak ve csv dosyasına bu bilgileri güncellemek için çalışıyorum, csv dosyasına veri bilgi almak mümkün ama veritabanı tablosundan başlık bilgi almak mümkün değilim csv dosyası içine.

Yani benim soruları How can I get Database Table Header information into an CSV File ?

$config['database'] = 'sakila';
$config['host'] = 'localhost';
$config['username'] = 'root';
$config['password'] = '';

$d = new PDO('mysql:dbname='.$config['database'].';host='.$config['host'], $config['username'], $config['password']);
$query = "SELECT * FROM actor";
$stmt = $d->prepare($query);

// Execute the statement
$stmt->execute();

var_dump($stmt->fetch(PDO::FETCH_ASSOC));

$data = fopen('file.csv', 'w');

while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    echo "Hi";
    // Export every row to a file
    fputcsv($data, $row);
}

Anlamı bilgisini header:

Vehicle     Build   Model
 car        2009    Toyota
 jeep       2007    Mahindra

Yani bunun için başlık bilgi olacaktır Vehicle Build Model

Herhangi bir rehberlik son derece mutluluk duyacağız.

4 Cevap

Sadece array $ satırdan anahtarlarını almak: array_keys(). Şimdi tüm columnnames var ve sizin csv dosyasına koyabilirsiniz.

======= DÜZENLEME =======

<?php

$header = array();

while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    if(empty($header)){ // do it only once!
      $header = array_keys($row); // get the columnnames
      fputcsv($data, $header); // put them in csv
    }

    echo "Hi";
    // Export every row to a file
    fputcsv($data, $row);
}
?>

DAN SHOW sütunlarından kullanarak sizi sütun adlarını alacak. Daha sonra onlarla CSV ilk satırı yazabilirsiniz:

// Do this before adding the rows from the database
$query = "SHOW COLUMNS FROM some_table";
$stmt = $d->prepare($query);
$stmt->execute();
$columns = '';
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    $columns .= $row['Field'] . ',';
}
$columns = substr($columns, 0, -1);
fputcsv($data, $columns);

Kullan mysqldump:

mysqldump -u user -p --fields-terminated-by=',' --tab=/tmp mydatabase mytable

Yukarıdaki komutu / tmp 2 dosya yaratacaktır. mytable.sql ve mytable.txt. Sql dosyası tablo oluşturma şema içerecek ve txt dosya virgülle ayrılmış alanlar ile mytable tablonun kayıtları içerecektir.

Sizin sonuç küme olarak döndü sütun adına göre endeksli bir dizi döndürür: Zaten PDO::FETCH_ASSOC o var

EDIT: One way to get and write the names of columns is (put it before your while lopp)

fputcsv($data, array_keys($stmt->fetch(PDO::FETCH_ASSOC)));

php arrays hakkında okuyun ve (örneğin dizini 'keys'e gibi) diziler özellikle ve fonksiyonu üzerine ilişkisel diziler. Özellikle soruların yanıtları diziler gibi temel kavramların anlaşılması yerini alamaz.