在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,这会使对象失败。

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

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

我终于有答案了。虽然我不确定这是否是最好的答案。目前这是唯一的答案。如果你能给我一个更好的解决方案。我当然会代之以你的。我得到id与preg匹配,然后剥离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