Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: sallittua/toimiva?

translation [19.05.2005 14:27:16]

#

$result = mysql_query("select * from elokuva WHERE nimi AND paaosissa AND genre LIKE '%$hae%'");

eli on tuo salittua käyttää noin vai onko siihen jokin muu tapa?

selvitin jo tuon... ei tarvitse mitää neuvoa enää

exAtuu [19.05.2005 22:31:36]

#

Olisi ystävällistä antaa vastaus myös muille, jotka miettivät samaa asiaa.

renni [20.05.2005 15:12:38]

#

No eipä tuo sql-lause ole syntaksin mukainen, eli ei käy. En sit tiedä mitä tässä on edes yritetty tehdä.

Lebe80 [20.05.2005 16:24:19]

#

$query = 'SELECT * FROM elokuva WHERE ';
$query .= '(nimi LIKE "%'.$hae.'%" ) OR ';
$query .= '(paaosissa LIKE "%'.$hae.'%" ) OR ';
$query .= '(genre LIKE "%'.$hae.'%" )';

$result = mysql_query($query);

if ($result){
  // Listaa leffat
}

varmaankin jotain tommosta haettu(?)


edit:
tietysti useamman hakukentästä etsiminen kannattanee toteuttaa jonkinsortin for-loopin kautta, jottei $queryä tarvitse kirjoittaa "käsin"... On sitten haettavat kentät helpompi määrittää myöhemminkin.

uffis [21.05.2005 15:43:23]

#

Tietokannasta ei koskaan pitäisi pyytää muita sarakkeita kuin mitä oikeasti tarvitsee, eli unohda SELECT * ja käytä pikemminkin SELECT sarake1, sarake2, ellet todellakin hae ja tarvitse _kaikkia_ sarakkeita. Näin koodistakin on helpompi etsiä ongelmia, jos jokin tieto ei tulostu, kun näet välittömästi, mitkä sarakkeet tietokannasta haetaan.

Menee pilkun epäilyttävän lähestymisen puolelle, mutta jos kerran kirjoitat osan SQL:n kieliopista isoilla kirjaimilla, niin mikset sitten samalla kirjoita kaikkia SQL:n varattuja sanoja isoilla kirjaimilla, jotta koodisi olisi yhtenäisempää ja nopeammin/helpommin luettavaa?

Merkkijonon validointi ennen sen liittämistä SQL-kyselyyn puuttuu kokonaan.

Jos en ole aivan väärässä, Lebe80:n mallin mukaisesti OR-operaattorien ja merkkijonon osumien tarkistaminen mistä kohtaa merkkijonoa tahansa ei käytä indeksejä, ja aiheuttaa suuremmilla tietomäärillä merkittävää hitautta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta