Problème insertion SQL via PHP

Mammouth du PHP | 531 Messages

11 oct. 2007, 10:50

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à :?

Eléphant du PHP | 443 Messages

11 oct. 2007, 10:54

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...
Modifié en dernier par Tracker le 11 oct. 2007, 11:00, modifié 2 fois.

ViPHP
ViPHP | 4039 Messages

11 oct. 2007, 10:57

Ouaip.

Sinon, tu avé d'abord essayé une insertion manuelle dans phpmyadmin ? on y voit de suite plus clair.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 531 Messages

11 oct. 2007, 10:58

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

Eléphant du PHP | 443 Messages

11 oct. 2007, 11:02

Fais toi une classe genre PDO pour préparer tes ordres et tu n'auras plus de problèmes...

Mammouth du PHP | 531 Messages

11 oct. 2007, 12:04

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");

ViPHP
ViPHP | 4039 Messages

11 oct. 2007, 13:53

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,
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 531 Messages

11 oct. 2007, 14:54

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 :?