Page 1 sur 1

Problème insertion SQL via PHP

Posté : 11 oct. 2007, 10:50
par supercanard
Bonjour,

Depuis hier je suis sur une foutu requete d'insertion qui veut pas m'inserer mes données grrrrrrrrr :x

Alors la table est bien créée, mais l'insert, quenini :
$req= mysql_query("CREATE TABLE if not exists bloom_pages2 (
`id` int(11) NOT NULL auto_increment,
  `nom` varchar(25) NOT NULL,
  `contenu` text NOT NULL,
  `nom_lien` varchar(50) NOT NULL,
  `pos_lien` int(11) NOT NULL,
  `visible` int(1) NOT NULL,
  PRIMARY KEY  (`id`)
)");

$req= mysql_query("INSERT INTO bloom_pages2 (id,nom,contenu,nom_lien,pos_lien,visible) VALUES ('','index','<h1>Bienvenue sur votre BloOm CMS !</h1><p>Ceci est votre page d'accueil. Connectez-vous pour administrer BloOm CMS !.</p>','Accueil','0','1')");
Si vous voyez le problème... ? moi je m'arrache les cheveux là :?

Posté : 11 oct. 2007, 10:54
par Tracker
Le bout de texte
[quote]... d'accueil ...[quote]
ferme ta chaine... :(

Echappe tes paramètres.

[edit]
En plus tu inseres encore une fois un paramètre auto-incrementé, je ne suis vraiment pas sûr que l'idée soit terrible...

Posté : 11 oct. 2007, 10:57
par Berzemus
Ouaip.

Sinon, tu avé d'abord essayé une insertion manuelle dans phpmyadmin ? on y voit de suite plus clair.

Posté : 11 oct. 2007, 10:58
par supercanard
Le bout de chaine
... d'accueil ...
ferme ta chaine... :(

Echappe tes paramètres.
Bon je me permet un gros mot :

MERDEUUUUUH j'en ai marre de faire des erreurs d'inattention !
je le sais en plus qu'il faut mettre un anti slash mais j'avais pas vu :D

Posté : 11 oct. 2007, 11:02
par Tracker
Fais toi une classe genre PDO pour préparer tes ordres et tu n'auras plus de problèmes...

Posté : 11 oct. 2007, 12:04
par supercanard
Fais toi une classe genre PDO pour préparer tes ordres et tu n'auras plus de problèmes...
Ouip

Sinon j'en rajoute une couche. Maintenant que je veut faire la même chose en spécifiant les interclassement les tables ne sont plus créées :
$req= mysql_query("CREATE TABLE if not exists bloom_pages2 (
`id` int(11) NOT NULL auto_increment,
  `nom` varchar CHARACTER SET utf8 COLLATE utf8_bin (25) NOT NULL,
  `contenu` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `nom_lien` varchar CHARACTER SET utf8 COLLATE utf8_bin (50) NOT NULL,
  `pos_lien` int(11) NOT NULL,
  `visible` int(1) NOT NULL,
  PRIMARY KEY  (`id`)
)ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci");

Posté : 11 oct. 2007, 13:53
par Berzemus
Pour tester des requêtes sql => coller la requête dans une bdd test dans phpmyadmin, regarder, et bidouiller.
 `nom` varchar CHARACTER SET utf8 COLLATE utf8_bin (25) NOT NULL,
pourquoi le (25) n'est pas à côté de la définition de type du contenu ?

ça c'est juste:
 `nom` varchar(25) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,

Posté : 11 oct. 2007, 14:54
par supercanard
Merci

Par contre je suis pas sur de ne pas dire une connerie mais sous mysql 4 (ou 3?) l'UTF8 n'est ps géré il me semble ? Ou ce sont les interclassement pour les champs qui ne le sont pas ?
Je sais plus, enfin il me semble qu'il y a un truc :?