3

好的,这就是挑战。我在 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 函数。所以我很困惑为什么他们至少没有抛出错误。但是在项目的这个阶段我不在乎我只是想要数据库中的数据以任何方式!任何 hack 都会做,因为项目的范围以数据库中的数据结束。

旁注:我已尝试使用 ODBC 访问 DB,并考虑使用 file maker pro 手动导入,但安装在 Linux 服务器上的 PHP 在 php.ini 文件中缺少一个 com 类,我无权更改它。

我也考虑过使用 XML 做同样的事情,尽管我跟不上它的速度。但就像凌晨 4 点的醉汉一样,我愿意试一试。

提前致谢!

4

2 回答 2

3

您需要将字段名映射到数组 $respondent_data 中的值。简单的 key=>value 编程风格。

$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

于 2013-01-21T20:57:01.850 回答
1

首先,FileMaker 自己建议您在构建 Web 应用程序时使用带有外部 SQL 源的第三方数据库。如果您要让多个用户同时点击它,这是获得良好性能的唯一方法。

这将允许您使用 MySQL、Access 或其他工具构建您的 Web 应用程序,然后将该数据库连接到 FileMaker,以便它的表像其他 FM 表一样显示。然后,您可以使用来自第 3 方数据库的数据在 FM 中创建布局、脚本、计算等,就像它是实际的 FM 数据一样。

如果您想坚持使用 PHP API,您需要确保文件实际在服务器上运行,并且您只需使用 Pro 打开它。我有点困惑你说你是如何下载它以在 Pro 中运行..?? 您不下载它...您只需从远程服务器打开它。

然后,您需要确保该文件为您通过 FM 中的安全设置连接的用户启用了 PHP API。我建议创建一个特定于您的 Web 应用程序的用户,并且只给它 PHP API 访问权限。

然后,当您将 Web 应用程序与该用户连接时,您应该一切顺利。

于 2013-01-21T00:50:54.767 回答