使用PHP从csv dump中提取特定的Web服务

时间:2014-05-26 19:10:00

标签: php web-services

我有一个smartertrack服务器,我正在使用他们位于此处的网络服务http://portal.smartertools.com/services2/

旧的服务器是Vtiger的设置很糟糕,它的mysql数据库很复杂,如果没有荒谬的时间配对等效表,就无法进行直接传输。因此,我倾倒信息并将特定信息转移到新系统中。

我的excel转储测试我已经设置了,当我拉它时,我确实将它转换为CSV。

第0行:用户名 第1行:电子邮件 第2行:密码 第3行:电话号码 第4行:UserID

CreateUser2 将用户添加到没有任何角色的SmarterTrack。通常,您应该通过对AddRoleToUser函数的一次或多次调用来执行此函数。 Web服务为新服务器设计的用于创建用户的输入参数如下

  • authUserName String具有调用此Web服务权限的用户名。
  • authPassword String authUserName参数中使用的帐户的密码。
  • username String用户的登录用户名。
  • password String用户的登录密码。
  • email String应与用户帐户关联的电子邮件地址。
  • isEmailVerified Boolean如果应将电子邮件地址视为已验证,则为True。
  • displayName String用户的友好名称(通常是其全名)

所以当我在php CL中使用以下代码时,我可以将用户上传到服务器并进入新的MySQL数据库就好了。

<?php
/*
 * Usage: php createUsers.php [baseurl] [username] [password] [csvfile]
 */

$baseUrl = $argv[1];
$authUserName = $argv[2];
$authPassword = $argv[3];
$csvFile = $argv[4];

$client = new SoapClient($baseUrl.'Services2/svcOrganization.asmx?WSDL');
$fp = fopen($csvFile,'r') or die("Could not open $csvFile");
while($row = fgetcsv($fp)) {
  $result = $client->createUser(array(
    'authUserName' => $authUserName,
    'authPassword' => $authPassword,
    'username' => $row[0],
    'password' => $row[4],
    'email' => $row[1],
    'isEmailVerified' => true,
    'displayName' => $row[0],

  ));
}

这很好用,没问题。因此,在我的服务器中编辑用户设置时,您可以选择自定义字段等选项。

SetUserCustomFields 设置指定用户提供的自定义字段属性的值。

此webservices输入参数如下:

  • authUserName String具有调用此Web服务权限的用户名。
  • authPassword String authUserName参数中使用的帐户的密码。
  • userId Int32要修改的用户的数字ID。
  • customFieldValues String []为用户设置的自定义字段,格式为 - &#39; key = value&#39;对。键应该是自定义字段的名称,由函数返回 - GetAllCustomFields。

同样,第4行是转储文件中的userID。 customFieldValues是一个数组,这是我用来尝试拉这个的代码

<?php
/*
 * Usage: php createUsers.php [baseurl] [username] [password] [csvfile]
 */

$baseUrl = $argv[1];
$authUserName = $argv[2];
$authPassword = $argv[3];
$csvFile = $argv[4];

$client = new SoapClient($baseUrl.'Services2/svcOrganization.asmx?WSDL');
$fp = fopen($csvFile,'r') or die("Could not open $csvFile");
while($row = fgetcsv($fp)) {
  $result = $client->SetUserCustomFields(array(
   'authUserName' => $authUserName,
   'authPassword' => $authPassword, 
   'userId' => $row[5],
   'customFieldValues' => array(
   'Phone' => $row[3]
)));
}   

在服务器中,对于自定义字段,字段标识符电话的ID为3.(显示名称为1,地址47等...)

使用该代码语法清晰,但我仍然没有进入服务器,这让我陷入困境。我显然正确地瞄准了服务器,我只是不知道我的键值对是否正确。

1 个答案:

答案 0 :(得分:0)

我明白了,&#39;电话&#39; =&GT; $ row [3]需要是&#39; Phone =&#39;。 $行[3]