我搜索了互联网,但没有得到任何具体细节。
环境为Windows 8
,WAMP
,MONGODB
我正在尝试设计一个网页,其中有4个字段:Name,Contact,Device,Email.
用户点击submit
按钮后,数据会插入MongoDb。这一切都很好。
当我尝试write the inserted data in the csv file
时,问题就开始了,因为这是要求。我已经尝试了MongoDB Export command in the cmd
,但它运行正常,但尝试使用exec function in the php script
调用相同内容证明是徒劳的。
我也试过这个,通过存储command in a .bat
文件,然后使用php的exec函数调用.bat文件,仍然没有效果
<?php
echo '<pre>';
// Outputs all the result of shellcommand "ls", and returns
// the last output line into $last_line. Stores the return value
// of the shell command in $retval.
exec("c:\WINDOWS\system32\cmd.exe /c START C:\wamp\bin\mongodb\mongodb-win32-x86_64-2008plus-2.4.3\conf\export.bat");
?>
我已在我的WAMP服务器中启用了与桌面的checbox交互。
我不需要任何与编码有关的具体帮助,我需要的是如何继续前进的一些方向,因为我知道我遗漏了一些东西。此外,我重申,在互联网上没有任何具体内容,因此,发布了这个问题。
请告诉我如何实现这一目标。
感谢所有人
答案 0 :(得分:3)
以下可能有效
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename=example.csv');
header('Pragma: no-cache');
$database = "DATABASE";
$colName = "COLLECTION";
$connection = new MongoClient();
$collection = $connection->$colName->$database;
$cursor = $collection->find();
foreach($cursor as $cur)
echo '"'.$cur['field_1'].'","'.$cur['field_2']."\"\n";
答案 1 :(得分:1)
此代码会将您选择的数据库转储到json文件
$mongoExport = 'c:\mongodb\mongoexport'; //full path to mongoexport binary
$database = 'test';
$collection = 'foo';
$file = "c:\\temp\\foo.json"
exec(sprintf("%s -d %s -c %s -o %s",
$mongoExport,
$database,
$collection,
$file
));
这是使用纯PHP,肯定会更快的mongoexport选项,大集合:
$database = 'test';
$collection = 'foo';
$m = new MongoClient();
$col = $m->selectDB($database)->$collection;
$json = json_encode(iterator_to_array($col->find()));
答案 2 :(得分:0)
set_time_limit(0);
ob_start();
error_reporting(E_ALL);
ini_set("display_errors",1);
$conn = new MongoClient("mongodb://Hostname:27017", array("replicaSet" => "rs0"));
if(!$conn){
die("Unable to connect with mongodb");
}
$db = $conn-><DB NAME>; // DB name
$col1 = $db-><colname>;
$col2 = $db-><colname>; // collection name which u want .
$filterCountry = array("status"=>"1"); // where query
$records = $col1->find($filterCountry);
$fp= fopen('exampleTest11.csv', 'w'); // open csv file in which u want write data.
$headings[] = "Code";
$headings[] = "Status" ;
$headings[] = "EMP CODE";
fputcsv($fp, $headings); // PUT Headings .
$cnt =0;
foreach($records as $val) {
$csvarr = array();
$csvarr['code']= $val['code']; // fetch data from database.
$csvarr['Status']= $val['status'];
$csvarr['emp_code']= $val['emp_code'];
fputcsv($fp, $csvarr);
$cnt++;
}
echo "Completed Successfully..".$cnt;