> -----Original Message----- > From: Ross Draper [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, January 28, 2003 6:15 AM > > Wahoo! I owe you a beer :-) > > That did the trick. Its inserted into the Database quite happily. > > I think I'll need to use both that and a filter for > apostrophes in the future to > make 100% sure I dont get anything untoward passed to the ODBC driver.
Ross, You may want to skip both of those custom filters and try using the following: $db->quote($BIOSVer); This should automatically make your variable "SQL friendly" for you. It will also do things like change a null value to the keyword NULL. Chris > > Many thanks to everyone who replied to me, your help was much > appreciated. > > Kind Regards > > Ross > > > > > > > Dutrieux Yves <[EMAIL PROTECTED]> on 28/01/2003 11:07:32 > > To: Ross Draper/Radio@Radio, Dutrieux Yves <[EMAIL PROTECTED]> > cc: > > Subject: RE: Win32 ODBC and SQL Insert error. > > > > > > Try this with your original code, > > $BIOSVer=~s/\00//g; > > before the INSERT > > I've seen that $BIOSVer is a binary value in registry and at > the end of > value, there are two Binary Nul (\00). > With this code, the binary value are fired. > > Yves > -----Original Message----- > From: Ross Draper [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, January 28, 2003 11:01 AM > To: Dutrieux Yves > Subject: RE: Win32 ODBC and SQL Insert error. > > > > > Hi Dutrieux > > Thanks for your help. > > I've tried as you sugested, but still get the error. Do you > know of any > regular > expression that would filter out non printing characters? > > I'm not quite sure what you mean by debug and display, If by that you > simply > mean printing the value to screen, I have done so and the variable is > correct > before and after the SQL insert. > > Kind Regards > > Ross > > > > > Dutrieux Yves <[EMAIL PROTECTED]> on 28/01/2003 07:56:49 > > To: Ross Draper/Radio@Radio > cc: [EMAIL PROTECTED], Timothy Johnson > <[EMAIL PROTECTED]> > > Subject: RE: Win32 ODBC and SQL Insert error. > > > > > REG_MULTI_SZ are array ... so I think you have some nul values in your > reference array $BIOSVer > Can you debug and display $BIOSVer to see if it's correct ? > > try this ? > ($BIOVer)= $BIOSKey->GetValue('SystemBiosVersion'); > > Here a old message that explain : > > === cut ===== > "Lee Clemmer" <[EMAIL PROTECTED]> writes: > > > $retval = $key->SetValue("TurfTable", @junklist, "REG_MULTI_SZ" > > Executive summary: Try \@junklist instead. > > > I JUST tried this with the syntax shown in the example > > ("valuename",["foo.com","bar.com", "bax.com"],"REG_MULTI_SZ") > > What is the difference between my named array and an anonymous one?! > > Perl arrays have "splicing semantics", which are very useful. But > they are definitely confusing if you are accustomed to other > languages. (The closest thing in C is probably varargs, which is not > very close. Even Lisp requires you to use things with names like > "quasiquote" and "unquote-splicing" and "eval" and "apply" to get > similar semantics.) > > In short, this code: > > my @foo = (1, 2, 3); > bar (@foo); > > ...does the same thing as this code: > > bar (1, 2, 3); > > Both call "bar" with three arguments: the numbers 1, 2, and 3. > > Contrast with this: > > my @foo = (1, 2, 3); > bar (\@foo); > > ...which is the same as: > > bar ([1, 2, 3]); > > These both call "bar" with one argument, a reference to an array > containing the numbers 1, 2, and 3. > > The square brackets create a reference to an (anonymous) array. To > obtain a reference to a named array, you put a backslash before the > name, like so: > > $retval = $key->SetValue("TurfTable", \@junklist, "REG_MULTI_SZ"); > > - Pat > _______________________________________________ > Perl-Win32-Admin mailing list > [EMAIL PROTECTED] > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs > > > == cut ==== > -----Original Message----- > From: Ross Draper [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, January 28, 2003 2:07 AM > To: Timothy Johnson > Cc: [EMAIL PROTECTED] > Subject: RE: Win32 ODBC and SQL Insert error. > > > > > Hi Tim > > Thanks for your reply. > > Yup, I've tried escaping the backslashes, I just removed them > in the last > mail > for readability. I'm currently going on the theory that I am > getting a > hidden > character from the REG_MULTI_SZ string in the registry. When you goto > modify > the value from regedt32 it lists the binary value of it in > addition to the > text > so I am assuming I am getting some sort of hidden character > left over from > the > conversion process Perl is putting it through. When printed > to screen or a > text > file it looks fine. > > Does this sound plausible? > > Cheers > > Ross > > > > > Timothy Johnson <[EMAIL PROTECTED]> on 01/28/2003 01:05:10 > > To: Ross Draper/Radio@Radio, > [EMAIL PROTECTED] > cc: > > Subject: RE: Win32 ODBC and SQL Insert error. > > > > > > Have you tried > "HKEY_LOCAL_MACHINE\\Hardware\\Description\\System\\SystemBios > Version"? > > -----Original Message----- > From: Ross Draper [mailto:[EMAIL PROTECTED]] > Sent: Monday, January 27, 2003 4:29 PM > To: [EMAIL PROTECTED] > Subject: RE: Win32 ODBC and SQL Insert error. > > > > > I've done some additional info and found that I can import > settings from > other > portions of the registry with no problems. It only appears to > be this one > value: > > "HKEY_LOCAL-MACHINEL\Hardware\Description\System\SystemBiosVersion " > > that is causing the problem. Its type is REG_MULTI_SZ. Can > anybody think > as to > why this one setting would cause problems when fetched with > TieRegistry and used in conjuntion with Win32 ODBC ? There > dont seem to be > any > SQL delimeters in the values I'm returning, I'm at a complete loss! > > Thanks for your help. > > Kind Regards > > Ross > ---------------------- Forwarded by Ross Draper/Radio on > 01/28/2003 00:41 > --------------------------- > > > Ross Draper > 01/27/2003 23:23 > > To: [EMAIL PROTECTED] > cc: > > Subject: Win32 ODBC and SQL Insert error. > > Hi guys > > I've been puzzling over this for a little while now and could > do with some > help. > I've written a script to retrieve information from remote > NT/2000 machines > and > squirt it into a MS SQL database(2000) for the purposes of auditing. > Everything > was working fine until a week or so ago when I noticed that > some machines > werent > appearing in my db anymore. After doing some debugging I > have found that my > SQL > insert statement is failing with the following error: > > Error: [105] [1] "[Microsoft][ODBC SQL Server Driver][SQL > Server]Unclosed > quotation mark before the character string 'Phoenix ROM BIOS > PLUS Version > 1.10 > A15'." > > To get to the basics of the problem I chucked away half the script and > whittled > it down to just the sections that retrieve and then insert > the data. It > seems > that no matter what I do I keep getting this error and I > think I have spent > so > long looking at it that I can no longer do so objectively. > --------------------------------------------- > use Win32::TieRegistry; > use Win32::ODBC; > > $IPaddress = "127.0.0.1"; > > if (!($db = new Win32::ODBC("DSN=auditdb;UID=xxxxx;PWD=xxxxxx;"))){ > print "Error connecting to $dsn\n"; > print "please check the settings in your ini file and try > again.\n"; > print "Error: " . Win32::ODBC::Error() . "\n"; > exit; > } else { > print "->Successfully connected to database using dsn.\n" > } > > $BIOSKey =new > Win32::TieRegistry"\\\\$IPaddress\\LMachine\\Hardware\\Descrip > tion\\System\\ > "; > $BIOSVer = $BIOSKey->GetValue('SystemBiosVersion'); > > > $db->Sql("INSERT INTO audit.dbo.system VALUES ( '$BIOSVer', > 'testPC' ) " ); > print "below is insert error\n"; > print "Error: " . Win32::ODBC::Error() . "\n"; > $db->Close; > -------------------------------------------------- > > Can you notice anything wrong with the above that could cause > it to generate > the > SQL error? The whole insert sting is just a series of > variables in the > full > program. > To my knowledge the SQL server hasnt been touched and I have > double and > triple > checked the db design. > If i substitute a text string for the variable it all works > fine, so I can > only > assume I am picking up a hidden character from somewhere? > > Could somebody be kind enough to put me out of my misery and > point out how I > have caused this error? This is running on win2k Pro and perl v5.6.1. > > Many thanks > > Ross > > > > > > ************************************************************** > *********** > GWR on the Web > > http://www.koko.com http://www.classicfm.com > > http://www.corefreshhits.com http://www.planetrock.com > > http://www.opusonline.co.uk http://www.gwrgroup.com > > CONFIDENTIALITY NOTICE > > The information in this e-mail and any attachments to it is > confidential > and may be legally privileged or prohibited from disclosure and > unauthorised use. If you are not the intended recipient, any > use, copying, > disclosure, modification, distribution and/or publication of this > message or its attachments (if any) is prohibited and may be unlawful. > > We will not accept liability for any claims arising as a result > of the use of the internet to transmit information by or to > GWR Group plc. > ************************************************************** > ************** > *********************** > > _______________________________________________ > Perl-Win32-Admin mailing list > [EMAIL PROTECTED] > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs > > > > > _______________________________________________ > Perl-Win32-Admin mailing list > [EMAIL PROTECTED] > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs > > > > > > > > > _______________________________________________ > Perl-Win32-Admin mailing list > [EMAIL PROTECTED] > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs > LEGAL NOTICE Unless expressly stated otherwise, this message is confidential and may be privileged. It is intended for the addressee(s) only. Access to this E-mail by anyone else is unauthorized. If you are not an addressee, any disclosure or copying of the contents of this E-mail or any action taken (or not taken) in reliance on it is unauthorized and may be unlawful. If you are not an addressee, please inform the sender immediately. _______________________________________________ Perl-Win32-Admin mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
