[mysqltcl] Erreur d'insert
#1
Bonjour à tous,

Encore une énigme pour ma part, toujours sur le mysqltcl via Eggdrop
Cette fois-ci, mon soucis vient d'un d'une requête:
- création dans la table

Explications:
J'ai une commande .xtopic (elle me permet crée le topic via l' eggdrop et ainsi l'ajouté à la table topic SQL)

Or, si jamais dans mon [lrange $arg 1 end] (puisque mon chan = [string tolower [lindex $arg 0]]) il y a le caractère: ' (apostrophe) il refuse toute action sur la commande et me demande de me reporté à ma doc mySQL


Code:
bind dcc - xtopic dcc:xtopic
proc dcc:xtopic {hand idx arg} {
if {[matchattr $hand n] || [matchattr $hand A]} {
set chan [string tolower [lindex $arg 0]]
set topic  [lrange $arg 1 end]
if {$chan=="" || ![string match #* $chan] || $topic==""} { putddc $idx "\2.xtopic\2 <#channel> <topic text>"; return 0 }
if [isvalidchan $chan] {
service:connect
mysqlsel $::mysqlink "INSERT INTO topic (chan, topic, auteur) VALUES ('$chan', '[join $topic]', '$hand')"
service:deconnect
putlog "#\2$hand\2# .xtopic ~> \($chan\) [join $topic]"
} else { putdcc $idx "\2Error\2 le salon déclaré n'existe pas"; return 0 }
} else { avertdcc $hand }
}
 

Merci de toute réponse que vous allez faire ainsi que votre lecture
[Image: http://www.web-modules.net/upload/cache/...156/61.gif]
[ www.Ahinu.tk ]

Programmation TCL interprété via Eggdrop + package mysqltcl
=> TCL+SQL~PHP

@Nordnet.
#2
Yep simon,

Je connais pas trop le mysql mais de mémoire tu fait un apostrophe au début et tu le ferme qu'a la fin il me semble si je ne dit pas de conneries..
Mais je pense que j'ai tord
#3
C'est pas sa le soucis Fred,
C'est si jamais j'utilise le char ' (apostrophe) dans l'insert INTO sa me sort une erreur,
Exemple:

.xtopic #test Bonjour pour de l'aide -> #Aide

Et la le Eggdrop me dis poliment d'aller me faire foutre puisque il ne comprends pas 'aide
En gros il prends 'aide pour une colone de la table topic

Et je cherche quelques par si il y a une solution
[Image: http://www.web-modules.net/upload/cache/...156/61.gif]
[ www.Ahinu.tk ]

Programmation TCL interprété via Eggdrop + package mysqltcl
=> TCL+SQL~PHP

@Nordnet.
#4
Ce qui est normal, c'est du MySQL. Il faut protéger les apostrophes.
Donc:

tcl
set topic [join [lrange $arg 1 end]]
regsub -all -- \\\' $topic \\\\\' topic

zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#5
Encore un grand merci à toi Crazy !
[Image: http://www.web-modules.net/upload/cache/...156/61.gif]
[ www.Ahinu.tk ]

Programmation TCL interprété via Eggdrop + package mysqltcl
=> TCL+SQL~PHP

@Nordnet.
#6
Bien que la solution de CrazyCat est totalement fonctionnel...

Je suggère la fonction ::mysql::escape proposer par mysqltcl qui le fait est qui est plus rapide:

Quote:::mysql::escape ?handle? string
Returns the content of string, with all special characters escaped, so that it is suitable for use in an SQL statement. This is simpler (faster) than using a general regexp or string map. If handle is specified C-API function mysql_real_escape_string is used. This is the recommended usage because in this case current character set is respected.

source site officiel : http://www.xdobry.de/mysqltcl/mysqltcl.html#22
Retrouvez les dernières modifications de mes scripts TCL (versions Alpha/Bêta) ainsi que d'autres de mes réalisations sur ma page GitHub et les versions stables dans la section scripts de ce site  8-)
#7
Bien vu, je mettrai à jour le wiki dès que possible.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#8
(10/07/2013, 11:23)CrazyCat Wrote: Bien vu, je mettrai à jour le wiki dès que possible.

Je me suis permis de le faire. J’espère l'avoir fais correctement.

http://wiki.eggdrop.fr/Mysqlescape


EDIT (hors topic) :
On rajouterai pas ::mysql::insertid ?
Je vois souvent dans des codes un Insert, suivis d'un select pour prendre le ID, suivis -par fois- d'un Update/Insert ID.
Retrouvez les dernières modifications de mes scripts TCL (versions Alpha/Bêta) ainsi que d'autres de mes réalisations sur ma page GitHub et les versions stables dans la section scripts de ce site  8-)
#9
Nickel pour la page Mysqlescape, j'ai juste déplacé le lien vers la page officielle dans le chapitre "voir aussi".
Tu peux ajouter le insertid, ça ne me pose aucun souci, bien au contraire.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
  [résolu] mysqltcl Supa 2 4,225 28/09/2012, 20:13
Last Post: Supa

Forum Jump:


Users browsing this thread: 1 Guest(s)