2017-08-28 4 views
1

Bonjour, Je voudrais savoir si PHP préparer la déclaration est synchrone ou asynchrone, par exemple:instruction PHP synchrone ou asynchrone

$req1 = "UPDATE ..."; 
$statement1 = $connection->prepare($req1); 
$statement1->execute(); 

$req2 = "SELECT ..."; 
$statement2 = $connection->prepare($req2); 
$statement2->execute(); 

Ainsi, le résultat de la deuxième demande dépend de la première, il peut causer des problèmes ou des résultats erronés, dans d'autres mots, il y a une possibilité que la deuxième demande s'exécute avant la première.

J'ai cherché des réponses, mais je n'ai pas trouvé de réponse claire. Merci à vous.

+0

Les bases de données relationnelles ont des transactions que vous pouvez démarrer/valider/restaurer depuis votre code PHP; mais le code s'exécute de manière synchrone; la première exécution de l'instruction se terminera avant que la seconde est préparée et exécutée –

+0

utiliser des transactions, qui vous fournirait l'intégrité des données – Gunnrryy

+0

Merci, maintenant je ne devrais pas vous inquiéter à ce sujet !! –

Répondre

4

Les requêtes de base de données sont exécutées de manière synchrone. Mais ne prenez pas ma parole, consultez le manuel:

AOP:http://php.net/manual/en/pdostatement.execute.php

Le résultat de la méthode est TRUE en cas de succès ou si une erreur survient, vous pouvez en déduire qu'il est synchrone.

MySQLi:http://php.net/manual/en/mysqli-stmt.execute.php

même ici. Vérifiez donc la documentation et si execute() renvoie quelque chose en rapport avec le résultat, vous savez qu'il doit être synchrone.

+0

Merci, maintenant je suis sûr que PDO exécute une requête d'instruction préparée (SQL) de façon synchrone par défaut, afin d'utiliser des opérations asynchrones, vous devez utiliser MySQLi. –

+0

Oui, voir: http://www.php.net/manual/fr/mysqli.poll.php –