13. april 2004 - 17:51Der er
4 kommentarer og 1 løsning
sammensætte streng til søgning i SQL DB
hejsa jeg har en gammel PHP side som indexere alle mine medier og gør det mugligt at søge i dem, nu har jeg så fået den tossede idé at jeg vil lave noget GUI i java istedet for en gammel webside, mit problem ligger nu i at få sammensat SQL strengen så jeg kan få det korrekte ResultSet at arbejde med udfra mine søge kriterier, min gamle PHP kode serud som følger
if (isset($medie_type) && !empty($medie_type)) { $tmpsql[] = "medie = '$medie_type'"; } if (isset($medie_type_index) && !empty($medie_type_index)) { $tmpsql[] = "medie_type_index = '$medie_type_index'"; } if (isset($medie_index) && !empty($medie_index)) { $tmpsql[] = "medie_index = '$medie_index'"; } if (isset($artist) && !empty($artist)) { $tmpsql[] = "artist LIKE '%$artist%'"; } if (isset($titel) && !empty($titel)) { $tmpsql[] = "titel LIKE '%$titel%'"; } $sql = "SELECT * FROM archive WHERE " . implode(' AND ', $tmpsql) . " ASC"; ?>
for ikke PHP kyndige: ideen med ovenstående er at tjekke om der er sat noget i de forskellige søgefelter, hvis et bestemt felt er sat smide en stump SQL kode i et array og til sidst sætte en søgestreng sammen via PHP's impode funktion, der blot løber et array igennem og sammensætter det til en streng med en bestemt iterator.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
StringBuffer sqlb = new StringBuffer("1"); if (...) sqlb.append(" AND foo = 'bar'"); if (...) sqlb.append(" AND foo = 'bar'"); ... String sql = "SELECT * FROM archive WHERE ".sqlb." ORDER BY id ASC";
den løsning har jeg skam overvejet, den giver jo blot et problem hvis jeg kun skriver noget i f.eks. artist ender min SQL sætning som String sql = "SELECT * FROM archive WHERE AND artist = 'foobar' ASC";
hvilket entlig ikke var meningen nærmere String sql = "SELECT * FROM archive WHERE artist = 'foobar' ASC";
jeg kan jo ikke vide om vedkommende der vil søge skriver noget i 1 felt eller i 3
dur ikke rigtigt, laver jeg f.eks. en søgning uden at indtaste noget i mine textfields får jeg en søning SELECT * FROM tabel WHERE 1 det retunere så samtlige linier i tabellen, hvilket jo absolut ikke var meningen
Det er jo en helt anden ting. Det tjekker du før du begynder at lave SQL'en, eller du kan flette det sammen sådan her: Du vil måske stille flere krav end det, fx. en minimum længde på søgeord.
StringBuffer sqlb = new StringBuffer("1"); boolean noget = false; if (...) { sqlb.append(" AND foo = 'bar'"); noget = true; } if (...) { sqlb.append(" AND foo = 'bar'"); noget = true; }
Synes godt om
Ny brugerNybegynder
Din løsning...
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.