I'm having a devil of a time trying to insert a Windows UNC share into my MySQL database. The DBI quote function doesn't seem to be behaving as I would expect. Here's a little example:

#!/usr/bin/perl -w
use DBI;
my $unc = '\\somebox.somehost.com\someshare';
my $dsn = "DBI:mysql:cmdb;localhost";
my $dbh = DBI->connect($dsn,'root','') or die;

my $quoted_unc = $dbh->quote($unc);
$dbh->do("INSERT INTO mytable (uncname) VALUE ($quoted_unc)");
$dbh->disconnect;

When I run this code, and then run a select against mytable, my UNC share is not the same as it was when it went in:

\somebox.somehost.com\someshare

If I double-quote the unc variable like this:

my $unc = "\\somebox.somehost.com\someshare";

The result is different, but not much better:

\somebox.somehost.comsomeshare

Anyone know how to get around this problem?

Recommended Answers

All 2 Replies

Hi KevinADC, thanks for the reply. As it turns out, the quote function was operating as expected. My problem was after the UNC was inserted, I was doing a select on that table and comparing the value that I inserted with the value that made it into the database, and I was doing the insert and comparison with 2 different methods:

To insert data:

$dbh->do("INSERT INTO table (uncname) VALUE ('$unc_name')");

To select data:

$sth = $dbh->prepare("SELECT uncname FROM table WHERE uncname = ?");
$sth->execute($uncname);

So, the select had the benefit of the quoting function, while the insert didn't. Thanks for the post!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.