好的,这就是挑战.我在Windows框上托管的Filemaker 12服务器上有一个File maker数据库.我还在Linux机器上托管了一个PHP表单.如何将数据从PHP表单获取到Filemaker数据库?这是我尝试过的.
<?php
define('fm_host', '131.181.###.###');
define('fm_file', 'name of the db');
define('fm_user', 'user');
define('fm_pass', 'password');
$layout_name = 'Request';
$respondent_data = array("stuff","stuff","stuff","stuff","stuff");
require_once ('FileMaker.php');
$fm = new FileMaker(fm_file, fm_host, fm_user, fm_pass);
if(FileMaker::isError($fm)){
die('Error - ' . $fm->getCode() . ' ' . $fm->getMessage());
}
$newAdd =& $fm->newAddCommand('Request', $respondent_data);
$result = $newAdd->execute();
?>
这样就完成了,没有错误,但是当我转到Filemaker pro并打开我使用Filemaker管理控制台从服务器下载的数据库副本时,没有新记录.我在与表单相同的目录中解压缩了Filemaker独立PHP API,并设法使用Filemaker.php函数.所以我对为什么他们至少没有抛出错误感到困惑.但是在项目的这个阶段,我不在乎我只是想通过任何方式获取数据库中的数据!任何骇客都会这么做,因为项目范围以数据库中的数据结尾.
旁注:我曾尝试使用ODBC访问DB,并考虑使用File Maker Pro进行手动导入,但是Linux服务器上安装的PHP在php.ini文件中缺少com类,并且我无权更改.
我也考虑过使用XML的同一件事,尽管我不适应它.但是,就像凌晨4点醉酒一样,我愿意尝试一下.
提前致谢!
解决方法:
您需要将字段名称映射到$respondent_data数组中的值.简单的key =>值编程风格.
$respondent_data = array("field1" => "stuff", "field2" => "stuff", "field3" => "stuff", "field4" => "stuff", "field5" => "stuff");
您也可以根据需要指定一个字段一个字段
$fm = new FileMaker(fm_file, fm_host, fm_user, fm_pass);
$cmd = $fm->newAddCommand($layout_name);
$cmd->setField("fieldname", "Value");
$cmd->setField("fieldname2", "Value2");
$cmd->setField("fieldname3", "Value3");
$result = $cmd->execute();
if(FileMaker::isError($result)){
die('Error - ' . $fm->getCode() . ' ' . $fm->getMessage());
}
在调用$fm-> execute()之前,无需调用FileMaker :: IsError方法.那就是当PHP使用cURL在FileMaker Server中查询WPE时.您将返回FoundSet-Object或Error-Object. IsError是查看WPE是否返回错误的一组记录的简单方法.
欲了解更多信息
http://www.filemaker.com/support/product/docs/12/fms/fms12_cwp_php_en.pdf