OVH Community, votre nouvel espace communautaire.

Mysql concatination queries (transféré de mutualisé)


Wi11iams
03/12/2009, 09h33
Citation Envoyé par cassiopee
Tu peux te bricoler une petite fonction pour faire ça automatiquement,
quelque chose de ce style :
Code:
1)
                {
                        $reponse = mysql_query($element);

                        if (!$reponse)
                        {
                                print "Erreur : Requete = ##$sql##
\n"; print mysql_error(); } } } } /* Début du programme principal */ $db=mysql_connect ("localhost",BDD_LOGIN,BDD_PASSWORD); mysql_select_db (BDD_NAME,$db); SQL ("DROP TABLE IF EXISTS test1; DROP TABLE IF EXISTS test2; DROP TABLE IF EXISTS test3;"); ?>
[/QUOTE]

merci. Ca marche, et sans ralentir le site
PS J'ai préféré if(strlen) a if($élément)


Paul

Wi11iams
28/11/2009, 13h33
Citation Envoyé par Noxiweb
Bonjour,

http://fr.php.net/manual/fr/function.mysql-query.php : "les requêtes multiples ne sont pas supportées"

Citation Envoyé par cassiopee
Tu peux te bricoler une petite fonction pour faire ça automatiquement,
quelque chose de ce style : (voir son message)

Merci à Noxiweb et à Cassiopée.
En fait, j'ai vu le lien dont tu parles Vendredi après-midi et je ne sais pas comment j'avais fait pour ne pas le voir avant. J'aurais dû mieux lire avant de poster sur le forum (mea culpa). Ensuite, j'ai regardé une fonction http://php.net/mysqli_multi_query qui, à supposer qu'il soit disponible, me fait craindre une consommation excessive de temps processeur: Certaines pages du site que j'écris prennent presque une demi-seconde de temps écoulé* chez OVH déjà et je suis vigilant. (D'après le forum, il y en a plusieurs qui se sont fait fermer par l'hébergeur, ce qui est compréhensible car il parait qu'ils bouffaient carrément 10 secondes. Et puis ce n'est pas tous les visiteurs qui patienteront pour voir venir la page demandée).

J'avais aussi songé à créer une fonction, mais c'est bien ta suggestion qui me fait franchir le pas maintenant. Il est nettement préférable d'avoir une fonction simple et adaptable comme celle que tu proposes, plutôt qu'importer une "usine à gaz" pouvant lester le site.
La semaine prochaine, je ferai une adaptation qui rapatrie ce que j'ai nommé $reponse pour la dernière d'une suite de commandes.

Je posterai, sur ce fil, les temps d'exécution.

Paul

PS un peu hors sujet, mais je suppose qu'il faille distingue entre trois sortes de temps.
1 le temps processeur consommé, logiquement la somme des moments d'utilisation
2 le temps écoulé d'exécution sur le serveur de l'hébergeur (dans mon cas entre 0,1 et 0,4 sec)
3 le temps d'attente vu par le visiteur (dans mon cas jusqu'à 7 sec !).

Pour le moment, Cybertheologie.net qui a besoin d'un énorme néttoyage, affiche le temps écoulé dans la "source" html. à l'aide de microtime(). Il serait intéressant de savoir aussi pour le temps consommé, mais comment ? Cette fois, je vais chercher d'abord et demander ensuite !

cassiopee
28/11/2009, 00h05
Tu peux te bricoler une petite fonction pour faire ça automatiquement,
quelque chose de ce style :

Code:
\n";
                                print mysql_error();
                        }
                }
        }
}

/* Début du programme principal */

        $db=mysql_connect ("localhost",BDD_LOGIN,BDD_PASSWORD);
        mysql_select_db (BDD_NAME,$db);

        SQL ("DROP TABLE IF EXISTS test1; DROP TABLE IF EXISTS test2; DROP TABLE IF EXISTS test3;");

?>
A adapter à ta sauce bien sûr.

C'est bien sûr améliorable dans tous les sens, tout dépend de ce que l'on
veut faire et de ses contraintes.

Noxiweb
27/11/2009, 23h38
Bonjour,

http://fr.php.net/manual/fr/function.mysql-query.php : "les requêtes multiples ne sont pas supportées"


Wi11iams
26/11/2009, 23h31
Copie de message que j'avais mis par erreur dans la catégorie principale des hébergements mutualisés.


Bonjour aux connaisseurs!
Je suis en Start 1G avec donc PHP et MySql 5,5
L'année dernière j'ai fait quelques scripts PHP envoyant des instructions à la base de données. Je me suis aperçu qu'une suite de commandes, envoyées en même temps, et séparées par des points-virgules, donnait une faute de syntaxe. Pourtant les mêmes commandes marchent parfaitement lorsqu'elles sont lancées via PhpMyadmin.
A l'époque j'ai pu me satisfaire d'envoyer les commandes une par une.
Mais maintenant que je suis en train de préparer des dizaines de suites de commandes différentes, cette contrainte devient pesante.
Voici un exemple, simplifié pour lisibilité, qui ne rapatrie aucune information de la base qui était déjà ouverte:

$temp=' DROP TABLE IF EXISTS test1; DROP TABLE IF EXISTS test2; DROP TABLE IF EXISTS test3;';
$reponse = mysql_query($temp);
echo mysql_error();


J'obtiens la réponse suivante:


DROP TABLE IF EXISTS test1; DROP TABLE IF EXISTS test2; DROP TABLE IF EXISTS test3;

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP TABLE IF EXISTS test2; DROP TABLE IF EXISTS test3' at line 2


J'ai fait un autre essai en enlèvent les ";" à toute hasard, et puis encore en mettant toutes sortes de guillemets autour des noms. Mais le message d'erreur est inchangé.
J'imagine que vous professionnels, avez des listes de commandes bien plus importantes encore.
Comment faites-vous ?
Merci pour toute suggestion.