【问题标题】:In plesk api how do I add a user to a database if I don't know the database id在plesk api中,如果我不知道数据库ID,如何将用户添加到数据库
【发布时间】:2016-12-28 18:02:22
【问题描述】:

在 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 访问数据库的好方法。您将完全依赖 Plesk,相信我,您不会想要的。见:php.net/manual/en/book.pdo.php
  • 我知道如何以正常方式创建数据库,例如“CREATE DATABASE”,但这种方式不会出现在 plesk 中,而这正是我老板想要的。它也没有将其分配给正确的域。我通常使用 mysqli 而不是 pdo 顺便说一句。我以后可能会使用 pdo,但还没有时间学习它。此外,一旦创建了数据库,我将使用 mysqli 创建表并执行所有操作。
  • 好吧,好吧,Plesk 它是... :-) 我几乎假设第一个请求将返回一个响应,其中包含数据库 ID。你不能用那个吗?
  • 我会看看这是否可行。会试一试

标签: php xml database api plesk


【解决方案1】:

我终于有了答案。虽然我不确定这是否是最好的答案。目前这是唯一的答案。如果你能给我一个更好的解决方案。我当然会代替你的。我通过 preg 匹配取回 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 实际上,在我回答了我自己的问题之后,我发现 Simplexml 是要走的路。所以我给你打勾,即使我用不同的解决方案回答它。
    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 2023-03-13
    • 2011-02-17
    • 2014-12-28
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多