insertion des tables dans base

Eléphant du PHP | 172 Messages

13 nov. 2018, 19:54

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;

";

Avatar du membre
Mammouth du PHP | 1564 Messages

13 nov. 2018, 21:31

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...)

Eléphant du PHP | 172 Messages

13 nov. 2018, 22:07

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;
}

Eléphant du PHP | 172 Messages

13 nov. 2018, 22:15

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) ;
Modifié en dernier par bob56@ le 13 nov. 2018, 22:31, modifié 3 fois.

Avatar du membre
Mammouth du PHP | 1564 Messages

13 nov. 2018, 22:22

Je trouve pas de solution à ton problème, c'est peut être pas possible

Eléphant du PHP | 172 Messages

13 nov. 2018, 22:32

Je viens de rectifier mon post ci-dessus, Merci two3d , j'attend de voir

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 nov. 2018, 15:00

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
Quand tout le reste a échoué, lisez le mode d'emploi...