Page 1 sur 1

insertion des tables dans base

Posté : 13 nov. 2018, 19:54
par bob56@
Bonsoir,

Voilà mon le problème, je peux créer une table et l'enregistrer dans la base sans aucun problème.
Maintenant si je mets plusieurs tables comme ci-dessous ( trois ), j'obtiens ce message d'erreur :(


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 'CREATE TABLE IF NOT EXISTS `acces_google_plus` ( `id` int(11) NOT NULL, `cho' at line 7

Merci d'avance pour vos lumières :)

// Creation des tables dans la base
$sql = "


CREATE TABLE IF NOT EXISTS `acces_facebook` (
`id` int(11) NOT NULL,
`choix_facebook` varchar(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


CREATE TABLE IF NOT EXISTS `acces_google_plus` (
`id` int(11) NOT NULL,
`choix_google_plus` varchar(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `acces_linkedin` (
`id` int(11) NOT NULL,
`choix_linkedin` varchar(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

";

Re: insertion des tables dans base

Posté : 13 nov. 2018, 21:31
par two3d
je pense que pour ne pas avoir d'erreur tu dois faire une par une ou sinon trouver le caractère qu'il faut pour "concaténer" plusieurs fois le CREATE TABLE (si c'est possible bien sur...)

Re: insertion des tables dans base

Posté : 13 nov. 2018, 22:07
par bob56@
Et oui il doit bien y avoir une solution

Par exemple avec çà, j'ai bien mes deux tables dans la base
// Creation table
$sql = "
CREATE TABLE IF NOT EXISTS `acces_facebook` (
  `id` int(11) NOT NULL,
  `choix_facebook` varchar(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
";
if ($conn->query($sql) === TRUE) {
    echo "<p class='alert'>Les tables ont été créés avec succès</p>";
} else {
    echo "<p class='alert'>Erreur création tables !</p> " . $conn->error;
}
// Creation table
$sql = "
CREATE TABLE IF NOT EXISTS `acces_google_plus` (
  `id` int(11) NOT NULL,
  `choix_google_plus` varchar(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
";
if ($conn->query($sql) === TRUE) {
    echo "<p class='alert'>Les tables ont été créés avec succès</p>";
} else {
    echo "<p class='alert'>Erreur création tables !</p> " . $conn->error;
}

Re: insertion des tables dans base

Posté : 13 nov. 2018, 22:15
par bob56@
plus réduit j'ai bien mes trois tables .
Autres méthodes, car j'en ai une bonne vingtaine et toujours partant pour apprendre :D

// Creation table facebook
$sql = "
CREATE TABLE IF NOT EXISTS `acces_facebook` (
  `id` int(11) NOT NULL,
  `choix_facebook` varchar(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
";
$conn->query($sql) ;
// Creation table google_plus
$sql = "
CREATE TABLE IF NOT EXISTS `acces_google_plus` (
  `id` int(11) NOT NULL,
  `choix_google_plus` varchar(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
";
$conn->query($sql);
// Creation table linkedin
$sql = "
CREATE TABLE IF NOT EXISTS `acces_linkedin` (
  `id` int(11) NOT NULL,
  `choix_linkedin` varchar(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
";
$conn->query($sql) ;

Re: insertion des tables dans base

Posté : 13 nov. 2018, 22:22
par two3d
Je trouve pas de solution à ton problème, c'est peut être pas possible

Re: insertion des tables dans base

Posté : 13 nov. 2018, 22:32
par bob56@
Je viens de rectifier mon post ci-dessus, Merci two3d , j'attend de voir

Re: insertion des tables dans base

Posté : 19 nov. 2018, 15:00
par @rthur
Bonjour,

C'est une limitation historique de query() qui ne permet l'exécution que d'une seule requête.

Avec mysqli, il faut utiliser mysqli_multi_query()
http://www.php.net/manual/en/mysqli.multi-query.php

Avec PDO, il faut que tu regardes avec le paramètre PDO::ATTR_EMULATE_PREPARES
https://stackoverflow.com/a/6461110