2016-03-24 21 views
0

Veri formuma bazı form verilerini şifrelemek ve göndermek için this çözümü kullanıyorum. Ayrı bir sayfada, şimdi bu verilerin şifresini çözmem ve hepsini birden çok satır içeren bir CSV dosyasına kaydetmem gerekiyor.MYSQL verilerini çöz ve CSV oluştur

Kodum şifresini çözüyor ($ yanıtları eklediğimde, tüm doğru verileri sayfaya yazdırıyor) ancak CSV'ye yükleyemiyorum. Bu kod bir CSV oluşturur, ancak her alan rastgele bir yerde bulunur ve bir sürü garip karakter vardır. Şanssız bir şekilde, aşağıdaki kodun bir çeşit varyasyonlarını denedim (bir diziye yükleme dahil). GÜNCELLEME

$theresults = $wpdb->get_results( 
" 
SELECT * 
FROM my_table 
" 
); 

foreach ($theresults as $result) { 

$iv = $result->iv; 

$responses = openssl_decrypt($result->title,'AES-256-CBC',$encryption_key,0,$iv).",". 
openssl_decrypt($result->fname,'AES-256-CBC',$encryption_key,0,$iv).",". 
openssl_decrypt($result->lname,'AES-256-CBC',$encryption_key,0,$iv).",". 
openssl_decrypt($result->address,'AES-256-CBC',$encryption_key,0,$iv).",". 
openssl_decrypt($result->emailadd,'AES-256-CBC',$encryption_key,0,$iv).",". 
openssl_decrypt($result->who,'AES-256-CBC',$encryption_key,0,$iv); 

fputcsv($output, explode(',',$responses)); 

} 

Öyleyse size şöyle benim diziyi oluştururken değişkenlere benim verilerini aktararak bu çalışma var:

$responses = array($title,$fname,$lname,$address,$age,$emailadd,$who); 
fputcsv($output, $responses); 

Bu CSV doğru satırları ekler dosya.

Şu anda sahip olduğumuz konu, elmas şekilleri, müzik sembolleri, satırları, kutuları gibi garip karakterler ile son halini alıyor. onlar içinde. Buna neyin sebep olduğunu bilen biri var mı?

+0

Bu nedenle, $ yanıtlarında * doğru * csv var, ancak diske doğru şekilde yazılmasını sağlayamıyor musunuz? – JLB

+0

* "her alan rastgele bir yerde" * - aldığınız şeyin rastgele karakterler ve ** beklediğinizden değil ** olduğunu söylemeye mi çalışıyorsunuz? Eğer öyleyse, yanlış şifreleme yöntemi, yanlış anahtar veya yanlış kodlama kullandınız. Bu nasıl şifrelenir? Bize kodu gösterebilir misin? –

+0

'$ output' nedir? Kodunuzda herhangi bir yerde tanımlanmış görmüyorum. – Chris

cevap

2

El ile virgülle ayrılmış bir dize oluşturup sonra virgüllere ayırıyorsunuz. Alanlarınızdan herhangi biri aslında virgül içeriyorsa, bu durum sizden kaçmadığınızdan dolayı kırılacaktır. Bu, beklediğinizden daha fazla alanla sonuçlanacak ve yanlış yerde olacaklar. Bunun yerine, alanları doğrudan bir diziye bırakın ve bu diziyi fputcsv() öğesine yönlendirin;

$responses = [ 
    openssl_decrypt($result->title ...), 
    openssl_decrypt($result->fname ...), 
    ... 
]; 
fputcsv($output, $responses); 
+0

Teşekkürler bunu bir daha sonra vereceğim :) – Zoee

+0

Bu benim için çalışmıyor, bir diziye yüklemek için çok fazla yol denedim ve her seferinde hatalar, hatta bir hata bile alamıyorum sadece beyaz bir sayfa, hatta tüm ekolarımı yok eder. Verileri yankıtabilirim ve değişkenlere yükledim, ama bir dizi içine koyduğum anda bir yere düşer! – Zoee

+0

Eğer PHP'niz çok eskiyse, kısa dizi sözdizimini [1,2,3] 'kullanamayacaksınız ve eski stil dizisini (1,2,3) kullanmanız gerekecek. Ayrıca, kaynak dosyadaki 'php -l file.php' komut satırından da çalıştırabilirsiniz ve bir sözdizimi kontrolü gerçekleştirecek ve herhangi bir sorunun açık olup olmadığını size söyleyecektir. –

İlgili konular