Huomasin, ettei MySQL-hyväksy (tai siis hyväksyy, muttei palauta tulosta) heittomerkkien sisäänlaitettua tekstiä kenttä-kohdassa.
SELECT * FROM XXXXX WHERE 'XXXXX' LIKE 'XXXX'
Ja ettäkö miksi olen laittanut ne heittomerkkien sisään - kentän nimi on kaksiosainen, eli sisältää välilyönnin - näin: Alkuperäinen nimi? Miten siis saisin MySQL:n listaamaan normaalisti, jos kentän nimi on kaksiosainen?
Toimisiko, jos kirjoitat kentän nimen `-merkkien sisään?
Ei, valitettavasti.
Testasin asiaa, ja `-merkin pitäisi kyllä auttaa.
Millaista kyselyä tarkalleen kokeilit?
Vika voi olla LIKE-sanan jälkeisessä kohdassa. Laita loppuosa testiä varten vaikka näin: LIKE '%' LIMIT 1
Tämä virhe tuli, kun yritin laittaa `-merkkien sisään:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/virtual/testi/htdocs/haku.php on line 14
Tässä vielä koko rivi:
$hakuni = $_GET[q]; $result = mysql_query("SELECT * FROM Tiedot WHERE Alkuperäinen nimi LIKE '{$hakuni}'");
Mitä tulee, jos suoritat kyselyn tähän tapaan?
$result = mysql_query("SELECT ...") or die(mysql_error());
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'nimi = `Työtön`' at line 1
Ongelma näet on tuo Alkuperäinen nimi. Koska siinä on välilyönti, niin MySQL käsittää vain sanan nimi kenttänä, eikä kokonaan Alkuperäinen nimi. Kuten ylläolevasta esimerkistä käy ilmi.
`-merkkeihin kuuluu laittaa se `Alkuperäinen nimi`. Haettava arvo on ihan oikein '-merkeissä.
Nyt se ei enää palauta virhettä, muttei kyllä tulostakaan. MySQL-kannat on aivan oikein asetettu ja hakusanakin on sellainen, että pitäisi löytyä.
EDIT: Thanx. Nyt toimii. Piti vain laittaa tuo %-merkki.
Aihe on jo aika vanha, joten et voi enää vastata siihen.