在 plesk api 中,如果我不知道数据库 ID,如何将用户添加到数据库

In plesk api how do I add a user to a database if I don't know the database id

在 Oleg Neumyvakin 的帮助下,我成功地使用 plesk api 创建了一个数据库,但现在我需要向该数据库添加一个用户。我已经弄清楚了如何将用户添加到数据库中,但是它需要知道数据库的 ID,而我在 php 中不知道。例如下面的请求代码创建数据库

<packet>
<database>
<add-db>
   <webspace-id>$webspaceId</webspace-id>
   <name>$dbName</name>
   <type>mysql</type>
</add-db>
</database>
</packet>

下面的代码创建一个用户并将其添加到数据库

<packet>
<database>
  <add-db-user>
      <db-id>26</db-id>
      <login>zebra</login>
      <password>zebra500</password>
   </add-db-user>
</database>
</packet>

你可以看到我的问题。第二部分使用数据库的 id 为 26 添加用户,但我不查看 plesk 就不知道 id,这使对象失效。

那么如何在创建数据库的同时添加用户呢?

我终于有了答案。虽然我不确定这是否是最佳答案。目前这是唯一的答案。如果你能给我一个更好的解决方案。我当然会勾选你的。我通过预匹配获取 id,然后剥离 id 标签并使用 id 创建用户。

$request = <<<EOF
<packet>
<database>

<add-db>
   <webspace-id>$webspaceId</webspace-id>
   <name>$dbName</name>
   <type>mysql</type>
</add-db>

</database>
</packet>
EOF;

$response = $client->request($request); // Send query to Plesk host
echo $response; // show response

// This gets the id by using preg match
preg_match('/<id>(.*)<\/id>/',$response,$match);
$databaseId=$match[0];
echo '</br></br>match:'.($databaseId).'</br></br>';
// This strips the id tag
$answer=$match[0];
$search = array('<id>', '</id>');
$replace = array("","");
$id = str_replace($search, $replace, $answer);

$request = <<<EOF
<packet>
<database>

  <add-db-user>
      <db-id>$id</db-id>
      <login>bert</login>
      <password>bert500</password>
   </add-db-user>

</database>
</packet>
EOF;

'</br></br>'.$response = $client->request($request); // Send query to Plesk host
echo $response; // show response

您可以使用任何 PHP 内置 XML 解析器,例如 SimpleXML or DOMDocument