Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Sql union hjälp

Skapad av Borttagen, 2011-06-08 23:14 i Webbutveckling & Programmering

1 047
6 inlägg
0 poäng
openoffice
Visningsbild
Hjälte 117 inlägg
0
Hej

Jag har en sök funktion på min sida som ska söka i två tabeller, blogg och nyheter.
Jag har googlat runt och kommit en bit på vägen men nu har de tagit stopp.
Ett stycke php-kod:

$sok = mysql_query("(SELECT * FROM `news` WHERE text LIKE '%".$string."%' OR title LIKE '%".$string."%') UNION (SELECT * FROM `blogg` WHERE text LIKE '%".$string."%' OR title LIKE '%".$string."%') ") or die(mysql_error());

Hur ska jag göra för att skriva ut resultaten som hämtas?

Ingen status

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0
Får du några felmeddelande eller vad är det som inte går som det ska?

Borde du inte använda dig av en union all också föresten, för annars finns väl risken att alla resultat inte kommer med, men jag kan ha fel :)

Jag är ond!

Syndafloden
Visningsbild
P 33 Karlstad Hjälte 10 705 inlägg
0
Om du kör en echo på $sok så borde du få tillbaka "Resource id #".

while($ny_var = mysql_fetch_assoc($sok)){
// Här får du en associated array med alla tabeller och rader du har
// hämtat. Du kan skriva ut dem med t. ex.

echo $ny_var['header'];

// om du har ett fält som heter header dvs. Tror jag, aldrig använt union.
}

HEH, TIME FOR A BIT OF A ROUGH AND TUMBLE

Joel
Visningsbild
P Hjälte Många söta inlägg
0
Svar till openoffice [Gå till post]:
* UNION ALL passar bättre som tvillingen nämnde...
* Om det krånglar testa ta bort () runt, det skapar en subquery och det kan vara blä.
* Det måste vara lika många fält du hämtar från båda tabellerna.
* Tips: För att kunna särskilja tabellerna kan du köra t.ex. SELECT bla, bla, 'blog' AS type UNION ALL SELECT bla, bla, 'nyheter'
* Tips: Du kan göra en fulltextsökning istället, lite mer avancerat. Du får googla.
* Tips: Antar att du har escapat indatan. Men har du satt escape på % och _? Nä, troligen inte. Utan en limit kan en elak person dumpa hela databasen, vilket kan bli tungt om du har en stor sådan. Kanske spelar mindre roll just i ditt fall dock... :)

Kaka

Syndafloden
Visningsbild
P 33 Karlstad Hjälte 10 705 inlägg
0

Svar till Joel [Gå till post]:
menar du mysql_real_escape_string som esccaoear "?

Ska man ta bort % och _ också då? : o

HEH, TIME FOR A BIT OF A ROUGH AND TUMBLE

Joel
Visningsbild
P Hjälte Många söta inlägg
0
Svar till Syndafloden [Gå till post]:
Ja. http://php.net/manual/en/function.mysql-real-escape-string.php där är vad den escapar (antar att du kopierade in i tråden och HP fulade med escapningen själv).

Du får köra t.ex. str_replace som lägger till ett backslash innan % och _ (åter igen kan man inte skriva backslashes i forumet). % matchar allt, _ matchar ett tecken...



Tillägg av Joel 2011-06-09 01:36

Man kan också köra en LIMIT på frågan, vilket man förmodligen borde ändå.

Kaka


Forum » Datorer & IT » Webbutveckling & Programmering » Sql union hjälp

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons