2016-08-22 1 views
2

Avec l'aide d'Oleg Neumyvakin, j'ai réussi à utiliser plesk api pour créer une base de données, mais maintenant je dois ajouter un utilisateur à cette base de données. J'ai travaillé sur comment ajouter un utilisateur à une base de données, mais cela nécessite de connaître l'identifiant de la base de données, que je ne connaîtrai pas en php. Par exemple, le code de requête suivante crée la base de donnéesComment ajouter un utilisateur à une base de données si je ne connais pas l'ID de la base de données

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

Et le code suivant crée un utilisateur et l'ajoute à la base de données

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

Vous pouvez voir mon problème. La deuxième partie utilise l'id de la base de données qui est 26 pour ajouter l'utilisateur, mais je ne connais pas l'identifiant sans regarder dans plesk, et cela détruit l'objet.

Alors, comment créer la base de données et ajouter l'utilisateur en même temps?

+0

Ce n'est pas une bonne façon d'accéder à des bases de données à partir de PHP. Vous serez complètement dépendant de Plesk, et croyez-moi, vous ne voulez pas. Voir: http://www.php.net/manual/fr/book.pdo.php –

+0

Je sais comment créer des bases de données de la manière habituelle, par exemple "CREATE DATABASE" mais cette manière n'apparaît pas dans plesk, et c'est ce que mon patron veut. En outre, il ne l'attribue pas au domaine correct. J'utilise généralement mysqli et non pdo btw. Je pourrais utiliser pdo plus tard, mais je n'ai pas encore eu le temps de l'apprendre. Aussi, une fois la base de données créée, j'utiliserai mysqli pour créer des tables et faire toutes les opérations. –

+0

Eh bien, ok, Plesk c'est ... :-) Je suppose presque que la première requête retournera une réponse, contenant l'identifiant de la base de données. Tu ne peux pas utiliser ça? –

Répondre

1

Vous pouvez utiliser tout de PHP intégré dans parseurs XML comme SimpleXML ou DOMDocument

+1

En fait, après avoir répondu à ma propre question, j'ai trouvé que Simplexml est la voie à suivre. Donc je vous donne la tique même si j'ai répondu avec une solution différente. –

1

J'ai enfin la réponse. Bien que je ne sois pas sûr si c'est la meilleure réponse. En ce moment c'est la seule réponse. Si vous pouvez me donner une meilleure solution. Je vais bien sûr cochez la tienne à la place. Je récupère l'id avec le match de preg puis dépouille le tag d'identification et employant l'identification pour créer un utilisateur.

$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