Bug avec l'Insert sous phpMyAdmin

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Bug avec l'Insert sous phpMyAdmin

par bzaume » 20 nov. 2005, 10:56

ou encore : installer phpmyadmin-2.7.0-beta1 ; là, pas besoin de modifier my.ini... (cf. Fixes : Strict mode and auto-increment fields insertion).

une solution, ouf !

par bzaume » 18 nov. 2005, 00:17

Bon, en fait, j'ai parlé sans réfléchir : pour que l'insertion fonctionne avec MySQL 5 (onglet "Insérer"), il faut modifier le fichier my.ini : dans la section

Code : Tout sélectionner

# Set the SQL mode to strict sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
(ligne 86 environ),
il suffit de supprimer

Code : Tout sélectionner

STRICT_TRANS_TABLES
ce qui donne :

Code : Tout sélectionner

# Set the SQL mode to strict sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
et là, ça marche comme avec MySQL 4.1 (après avoir redémarré mysld) : les auto-incréments sont respectés, les chaînes vides en tant que valeur par défaut également.

Pour plus de précisions, voir http://dev.mysql.com/doc/refman/5.0/fr/ ... -mode.html

Pas très propre, mais ça évite de saisir explicitement le numéro d'auto-incrément.

A noter - mais cela a déjà été dit - que ce problème ne se pose QUE dans phpmyadmin, et uniquement lorsqu'on cherche à ajouter des tuples en passant par l'onglet "Insérer" ; par contre, toute commande SQL INSERT, que ce soit dans la fenêtre SQL de phpmyadmin ou dans un script PHP, n'impose absolument pas de saisir la valeur des champs ayant une valeur par défaut, dont l'index auto-incrémenté. Mais il est vrai que cette façon de saisir des tuples, en passant par l'onglet "Insérer", est bien pratique...

par bzaume » 17 nov. 2005, 12:18

J'ai eu le même problème, la solution c'est que tu as du activer le strict mode de mysql5, que phpmyadmin ne supporte pas. Il suffit de reconfigurer ton mysql
L'invité de passage pourrait-il nous dire comment on désactive ce strict mode mysql5 ? :roll:
Merci !

par invité de passage... » 16 nov. 2005, 21:59

J'ai eu le même problème, la solution c'est que tu as du activer le strict mode de mysql5, que phpmyadmin ne supporte pas. Il suffit de reconfigurer ton mysql

par charles59 » 13 oct. 2005, 19:53

Salut,

le problème semble venir de phpMyAdmin, d'après vos conclusions

Si tel est le cas, es-tu allé voir sur leur site/forum ?

Tu y trouveras peut-être mention du bug correspondant ou tu pourras le signaler si c'en est réellement un ;)
Bonsoir,

J'y suis déjà allé plusieurs fois et je n'ai rien trouvé de relatif à ce problème malheureusement.

Mais après plusieurs recherches, je semble être le seul à avoir ce problème, et donc je me dis que le problème ne doit pas venir du script en lui même....

Snif :roll:

Merci de ton aide ouckileou :lol:

par ouckileou » 13 oct. 2005, 18:23

Salut,

le problème semble venir de phpMyAdmin, d'après vos conclusions

Si tel est le cas, es-tu allé voir sur leur site/forum ?

Tu y trouveras peut-être mention du bug correspondant ou tu pourras le signaler si c'en est réellement un ;)

par charles59 » 13 oct. 2005, 17:53

Bonsoir mere-teresa,

Je suis tout à fait d'accord toi mais ce n'est pas moi qui construit cette requête mais belle et bien phpMyAdmin lorsque j'utilise le formulaire pour insérer des données.

par mere-teresa » 13 oct. 2005, 16:28

`bu_id` tinyint(3) unsigned NOT NULL auto_increment

Quand c'est en auto-increment, tu n'as pas du tout à en parler, surtout si tu mets une chaîne de caractères vide comme '' alors que c'est un tiny_int ! (voir le message d'erreur Erreur #1366 - Incorrect integer value: '' for column 'bu_id' at row 1 )

par charles59 » 13 oct. 2005, 15:17

:shock: là, j'avoue que je flanche !!!
Redemande de l'aide ... ou emmene ton PC à St Jacques de Compostelle ;)
Pas de problème, merci tout de même 8)

par zeus » 13 oct. 2005, 15:15

:shock: là, j'avoue que je flanche !!!
Redemande de l'aide ... ou emmene ton PC à St Jacques de Compostelle ;)

par charles59 » 13 oct. 2005, 15:03

J'ai testé en copie/colle et en formulaire !

Ce code fonctionne sous Mysql 4 et pas sous mysql 5

Code : Tout sélectionner

INSERT INTO `backlist_username` ( `bu_id` , `bu_username` ) VALUES ( '', 'test' )
Pour ce qui est de la structure de la requete Insert, bizarrement, phpMyAdmin utilise celle là sur toutes les versions que j'ai pu tester lorsque l'on fait un insert par son formulaire...

par zeus » 13 oct. 2005, 14:50

Quand tu dit que tu as testé, tu copie/colle la requete ou tu passes par le formulaire ?

Si c'est la 2nd option, tente de prendre la requete qui fonctionne et de la tester sur l'autre et de faire l'inverse avec celle qui ne fonctionne pas

par charles59 » 13 oct. 2005, 14:48

Excuse moi, j'ai été malpoli :oops:
Pas de problème :)
:shock: quel formulaire ? Tu ne construits pas tes requetes tout seul ? Si c'est le cas, est-tu obligé d'utiliser cette génération ?
Et bien, j'utilise régulièrement phpMyAdmin pour effectuer des insert plus facilement.
Après, je pourrai très bien aller fouiller dans le code php de phpMyAdmin mais avant tout, j'aimerai savoir si l'erreur vient de moi ou non !
Est-ce que la structure de la table est identique (structure, type, contrainte)
Oui, je viens de tester avec la même table sur un serveur qui possède phpMyAdmin 2.6.1 et MySQL 4.1.13

par zeus » 13 oct. 2005, 14:22

Bonjour Zeus !
Excuse moi, j'ai été malpoli :oops:
Bonjour ;)
Je suis tout à fait d'accord avec toi mais malheureusement, c'est phpMyAdmin qui me sort ce type de requête lorsque je passe par son formulaire pour ajouter des données... :roll:
:shock: quel formulaire ? Tu ne construits pas tes requetes tout seul ? Si c'est le cas, est-tu obligé d'utiliser cette génération ?
J'ai vérifié sous MySQL 4.0 sur une autre machine et ça fonctionne parfaitement lorsque phpMyAdmin effectue cette requête :-(

Est-ce que la structure de la table est identique (structure, type, contrainte)

par charles59 » 13 oct. 2005, 14:18

Bonjour Zeus !

Je suis tout à fait d'accord avec toi mais malheureusement, c'est phpMyAdmin qui me sort ce type de requête lorsque je passe par son formulaire pour ajouter des données... :roll:

J'ai vérifié sous MySQL 4.0 sur une autre machine et ça fonctionne parfaitement lorsque phpMyAdmin effectue cette requête :-(