30. november 2005 - 09:48Der er
1 kommentar og 1 løsning
Database opslag med underligt output
hejsa alle,
jeg bruger følgende til at slå op i min access db via odbc:
my $sthscalar = $dbhfile->prepare( "SELECT Index, Files, Context FROM Files WHERE Context LIKE ?") || die "Can't prepare statement: $DBI::errstr";
$sthscalar->bind_param(1,"%$searchtext%"); # placeholders are numbered from 1 my $rcscalar = $sthscalar->execute || die "Can't execute statement: $DBI::errstr";
Problemet opstår når jeg søger efter denne streng "(NONE)" - altså uden gåseøjne - resultatet er at alle steder hvor der står NONE, bliver returneret og NONE gentaget. eksempel:
Søgt på: (NONE) Streng i db: ColumnsTableModel.None.txt=NONE Retur fra sql: ColumnsTableModel.None.txt=NONENONE
jeg har selv fundet forklaringen, problemet ligger i en regxp efter hvor jeg benyttede mig af følgende mønster: if ($inel =~ /(.*)($searchtext)(.*)/) { $firstpart=$1; $secondpart=$2; $thirdpart=$3;
her gik det galt med paranteserne da jeg forsøgte at bruge dem i $searchtext. I stedet skal de erstattes fra ( til \( og ) til \) og så bruges således:
if ($inel =~ /(.*)$searchtext(.*)/) { $firstpart=$1; $secondpart=$oldsearchtext; $thirdpart=$2;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.