2010-07-16 3 views
0

J'essaie d'exécuter une commande SQL pour mettre à jour plusieurs bases de données. Si je copie 'n coller le code sql ci-dessous directement dans PHPMYADMIN, il s'exécute très bien, mais quand je lance le SQL via PHP, il ne met pas à jour?SQL ne pas mettre à jour plusieurs bases de données ... Qu'est-ce qui ne va pas avec mon SQL?

Si j'exécute les mises à jour pour chaque base de données séparément via mon script php, elles se mettent bien à jour, donc je suis confus?

Qu'est-ce que je fais mal?

Code SQL:

UPDATE rst.users a, rst.user_type b 
SET a.first_name='Timsd',a.last_name='Lebaronsd',a.password='timsd', 
a.email='[email protected]', a.user_type_id='5',a.language_code='en_US', 
    a.timezone='Pacific/Midway', create_ts = '2010-07-16 12:33:31' 
WHERE a.user_type_id = b.user_type_id AND b.account_id = 1 AND a.users_id = 90; 

use externalusers; 

UPDATE externalusers.user 
SET fullname="'Timsd' 'Lebaronsd'", emailaddress="'[email protected]'" 
WHERE rst_id = 90 AND rst_account_id = 1; 

Répondre

3

mysql_query() et les fonctions similaires ne peuvent pas exécuter plusieurs instructions pour des raisons de sécurité.
Utilisez mysqli_multi_query() si vous voulez vraiment exécuter plusieurs instructions avec un seul appel.

P.S. Ce n'est pas une fonctionnalité PHP, mais une fonctionnalité de mysql C API.

+0

Merci ... cela aidera. – Ronedog

+0

Puis-je placer le SQL à l'intérieur d'une procédure stockée, puis dans la première instruction sql appeler la procédure stockée qui ferait la mise à jour à l'autre base de données? – Ronedog

+0

Ok, j'ai jeté l'idée de procédures stockées et j'ai décidé d'implémenter la solution mysqli. Fonctionne bien maintenant. Merci de votre aide. – Ronedog

0

PHP dispose d'une fonction de sécurité qui vous empêche d'exécuter plusieurs requêtes avec un seul appel mysql_query(). Malheureusement, il n'y a aucun moyen de le contourner avec les fonctions natives mysql_ *.

Cependant, je crois que vous pouvez le faire si vous utilisez PDO ou MySQLi. Je recommande fortement PDO.

+0

Puis-je placer le code SQL dans une procédure stockée, puis dans la première instruction sql appeler la procédure stockée qui ferait la mise à jour à l'autre base de données? – Ronedog

+0

vous pourriez ou vous pourriez faire deux connexions de base de données. – Cfreak

0

Pour ajouter aux réponses des autres, il est important de dire que vous n'exécutez pas une seule instruction SQL mais 2 (ou probablement 3), l'une après l'autre. PHPMYADMIN les brise simplement; et les exécuter en séquence.

Questions connexes