evagelos_21 Δημοσ. 4 Νοεμβρίου 2011 Δημοσ. 4 Νοεμβρίου 2011 Γεια σας. Εχω φτιάξει ένα πρόγραμμα σε delphi6 το οποίο συνδέει μια βάση sql server με μια βάση mysql. Κάνω select διάφορα πεδία απο την mssql και τα κάνω insert στην mysql. Ολά παίζουν καλά. Ενα πεδίο απο την mssql τύπου varchar, περιέχει και κώδικα html. Μέσα στο body του html αυτού υπάρχουν μονά quotes τα οποία και χαλάνε το select. Να κάνω replace τα quotes δεν θα είναι σωστό γιατί μετά η σελίδα που βρίσκεται μπροστά απο την mysql θα χαλάσει. Πως μπορώ να το ξεπεράσω αυτό; Εχει κανείς καμιά ιδέα; Ευχαριστώ
1lj4z1 Δημοσ. 4 Νοεμβρίου 2011 Δημοσ. 4 Νοεμβρίου 2011 Αν και δεν κατάλαβα ακριβώς τι ψάχνεις, άν είναι αυτό που νομίζω τότε χρειάζεσαι backslash στα αυτάκια >\"bla bla bla\"
nspyrou Δημοσ. 8 Νοεμβρίου 2011 Δημοσ. 8 Νοεμβρίου 2011 Γεια σας. Εχω φτιάξει ένα πρόγραμμα σε delphi6 το οποίο συνδέει μια βάση sql server με μια βάση mysql. Κάνω select διάφορα πεδία απο την mssql και τα κάνω insert στην mysql. Ολά παίζουν καλά. Ενα πεδίο απο την mssql τύπου varchar, περιέχει και κώδικα html. Μέσα στο body του html αυτού υπάρχουν μονά quotes τα οποία και χαλάνε το select. Να κάνω replace τα quotes δεν θα είναι σωστό γιατί μετά η σελίδα που βρίσκεται μπροστά απο την mysql θα χαλάσει. Πως μπορώ να το ξεπεράσω αυτό; Εχει κανείς καμιά ιδέα; Ευχαριστώ Το πρόβλημά σου φίλε δεν έχει να κάνει με backslashes στα single quotes μιας και η delphi δεν είναι C/C++/C++ Builder ... Η Delphi αξιοποιεί τα quotes για να εσωκλείει strings. Στο χαλάει γιατί νομίζει οτι κόβεται το string. Μπορείς να κάνεις replace τα Single Quotes με 2 Single Quotes .... :S,, και εξηγούμαι: > procedure Test() var MyString: String; Begin MyString := 'This Is a String'; MyString := 'This is a 'Quoted' String'; //-->> Εδώ χτυπάει λάθος!!!!! MyString := 'This is a ''Quoted'' String'; //-->> Εδώ πρέπει να περνάει κανονικά ... . . . End; Αντίστοιχα και στο πεδίο που διαβάζεις, το HTML πέρνα το από ένα Replace βρίσκοντας τα μονά quotes και αντικαθιστώντας με 2 μονά Quotes ... λογικά θα σου παίξει χωρίς πρόβλημα ...
evagelos_21 Δημοσ. 9 Νοεμβρίου 2011 Μέλος Δημοσ. 9 Νοεμβρίου 2011 Θα με τρελάνει Ενώ αυτό εδώ παίζει μια χαρά: > <HTML><HEAD><TITLE>Blank page</TITLE> <META content="text/html; charset=windows-1253" http-equiv=Content-Type> <STYLE>BODY { FONT-FAMILY: Verdana; FONT-SIZE: x-small } </STYLE> </HEAD> <BODY> <P>σσσσ</P> <P>σσσσσ</P> <P><STRONG>ααα</STRONG></P> <P><STRONG><FONT face=Arial>ααασσσ</FONT></STRONG></P> <P><STRONG><EM><U><STRIKE><FONT face=Arial>φφφ</FONT></STRIKE></U></EM></STRONG></P> <P> <HR id=0> <P></P> <P>δδδ</P> <P>asd</P> <P> <TABLE border=1> <TBODY> <TR> <TD></TD> <TD></TD></TR> <TR> <TD></TD> <TD></TD></TR></TBODY></TABLE></P></BODY></HTML> Αυτό εδώ βαράει μήνυμα: > <HTML><HEAD><TITLE>Blank page</TITLE> <META content="text/html; charset=windows-1253" http-equiv=Content-Type> <STYLE>BODY { FONT-FAMILY: Verdana; FONT-SIZE: x-small } </STYLE> </HEAD> <BODY> <P>σσσσ</P> <P>σσσσσ</P> <P><STRONG>ααα</STRONG></P> <P><STRONG><FONT face=Arial>ααασσσ</FONT></STRONG></P> <P><STRONG><EM><U><STRIKE><FONT face=Arial>φφφ</FONT></STRIKE></U></EM></STRONG></P> <P> <HR id=0> <P></P> <P>δδδ</P> <P>asd</P> <P> <TABLE style="WIDTH: 187px; HEIGHT: 75px" border=1> <TBODY> <TR> <TD></TD> <TD></TD></TR> <TR> <TD></TD> <TD></TD></TR></TBODY></TABLE></P></BODY></HTML> Η μόνη διαφορά είναι ότι στο table έβαλα style Δεν του αρέσουν τα style; Το μηνυμα λάθους είναι το "Parameter object is improperly defined. Inconsistent or incomplete information was provided." Ο κώδικας είναι αυτός εδώ: > ins := Format('insert into oc_product_description (product_id, language_id, name, description) '+ 'values(%d, %d, %s, %s)', [ categ.FieldByName('id').AsInteger, 1, QuotedStr(ToUnicode(mtrl.FieldByName('name').AsString)), QuotedStr(ToUnicode(mtrl.FieldByName('remarks_gr').AsString)) ]); //ShowMessage(ins); command.Connection := mysql; command.CommandText := ins; command.Execute;
_tasos Δημοσ. 9 Νοεμβρίου 2011 Δημοσ. 9 Νοεμβρίου 2011 Αντί να παλεύεις με μονά κ διπλά εισαγωγικά γιατί δεν προσπαθείς να κάνεις το Query σου με sql parameters;
evagelos_21 Δημοσ. 9 Νοεμβρίου 2011 Μέλος Δημοσ. 9 Νοεμβρίου 2011 Μπορείς να μου πεις ένα παράδειγμα;
_tasos Δημοσ. 9 Νοεμβρίου 2011 Δημοσ. 9 Νοεμβρίου 2011 Δεν ξέρω delphi για να σου δώσω κάποιο παράδειγμα. Φαντάζομαι αν ψάξεις στο google κάτι τύπου "delphi sql parameters" θα βρεις κάτι. Με τα παραπάνω keywords το πρώτο αποτέλεσμα είναι αυτό: http://delphi.about....l/aa050101a.htm. Έχει το παρακάτω code snippet, όπου μάλλον είναι αυτό που σου λέω. > with ADOQuery1 do begin Close; SQL.Clear; SQL.Add('SELECT * FROM Applications WHERE type =:apptype'); ParamByName('apptype').Value:='multimedia'; Open; end; Ελπίζω να σου έδειξα προς τη σωστή κατεύθυνση
_tasos Δημοσ. 11 Νοεμβρίου 2011 Δημοσ. 11 Νοεμβρίου 2011 Μα αυτό δεν κάνω και εγώ; Από το κομμάτι κώδικα που έδειξες είδα πως χρησιμοποιείς τη Format, ενώ εγώ σου ανέφερα την ParamByName("..."). Δες λίγο και εδώ, που συζητάνε ένα παρόμοιο πρόβλημα με σένα.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα