解密MYSQL数据并创建CSV

时间:2016-03-24 14:37:49

标签: php mysql csv encryption

我使用this解决方案加密并将一些表单数据发布到我的数据库。在一个单独的页面上,我现在需要解密该数据并将其全部保存到具有多行的CSV文件中。

我的代码解密很好(就像我回复$ response一样,它会将所有正确的数据打印到页面上),但我无法将其加载到CSV中。此代码创建一个CSV,但每个字段都在一个随机的位置,并且有很多奇数字符。我已经尝试了以下代码的大量变体(包括将其加载到数组中)而没有运气。

$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));

}

更新

所以我通过将数据传递给变量然后创建我的数组来实现这一点:

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

这会将正确的行插入CSV文件。

我现在的问题是数据后缀有奇怪的字符,如钻石形状,音乐符号,线条,方框?在他们中。有谁知道是什么原因引起的?

1 个答案:

答案 0 :(得分:2)

您手动构建逗号分隔的字符串,然后在逗号上拆分。如果你的任何字段实际上包含逗号,那么这将会破坏,因为你没有逃脱它们。这将导致比预期更多的字段,并且它们将位于错误的位置。相反,只需将字段直接删除到数组中,然后将该数组传递给fputcsv(),它将为您执行逗号转义。

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