login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Query fout (zoeken) (Opgelost)

Offline Wim - 23/08/2008 10:26 (laatste wijziging 23/08/2008 10:27)
Avatar van WimCrew algemeen Ik heb 2 tabbelen, namelijk movies en subtitles. De films hebben een title, id en een imdb nummer, de subtitles een id, release, author, language. Nu is het de bedoeling dat gebruikers kunnen zoeken op zowel release (wat meestal de naam van het filmbestand is) of op de title van de film, respectievelijk dus subtitles.release en movies.title. Beide velden zijn "full text".

  1. $search = new query("SELECT movies.id as mid,movies.title,subtitles.release,subtitles.id as sid ".
  2. "FROM subtitles ".
  3. "INNER JOIN movies ".
  4. "WHERE MATCH ('movies.title', 'subtitles.release') AGAINST('".mysql_real_escape_string($_POST['zoeken'])."', IN BOOLEAN MODE) ".
  5. "ON (subtitles.movie = movies.id)");


Echter krijg ik (van mysql_error()) volgende error te zien:
Warning: Wrong parameter count for mysql_query() in /home/hdsubsnl/domains/hdsubs.nl/public_html/classes/query.class.php on line 32

Enigste wat daar staat is dit:
  1. $this->q = mysql_query($this->query) or die(mysql_query());


(via de construct wordt de query onmiddelijk in $this->query gezet, dus deze heeft een waarde)

Als ik '21' als zoekterm ingeef (staat in de db in movies.title als "21 (2008)"), wordt dit de query:
  1. SELECT movies.id AS mid,movies.title,subtitles.release,subtitles.id AS sid
  2. FROM subtitles
  3. INNER JOIN movies
  4. ON (subtitles.movie = movies.id)
  5. WHERE MATCH ('movies.title', 'subtitles.release') AGAINST('2', IN BOOLEAN MODE)

4 antwoorden

Gesponsorde links
Offline Ultimatum - 23/08/2008 11:26
Avatar van Ultimatum PHP expert $this->q = mysql_query($this->query) or die(mysql_query()); moet dat niet $this->q = mysql_query($this->query) or die(mysql_error()); zijn. Volgens mij is dat de fout 
Offline Wim - 23/08/2008 15:58 (laatste wijziging 23/08/2008 16:24)
Avatar van Wim Crew algemeen hmm vandaar dat hij over een parameter count aan het zeuren was... Achjah, na dat te verwisselen kreeg ik eindelijk een deftige error, de quotes rond de velden moeten natuurlijik weg (blijkbaar mag ik niet scripten zo vroeg in de ochtend :x)

echter, probleem is nog steeds niet opgelost!

geupdatete code:
  1. $search = new query("SELECT movies.id as mid,movies.title,subtitles.release,subtitles.id as sid ".
  2. "FROM subtitles ".
  3. "INNER JOIN movies ".
  4. "ON (subtitles.movie = movies.id) ".
  5. "WHERE MATCH (movies.title) AGAINST('".mysql_real_escape_string($_POST['zoeken'])."' IN BOOLEAN MODE) ");


nog steeds geen resultaten...
Offline Ultimatum - 23/08/2008 17:59
Avatar van Ultimatum PHP expert Wat krijg je nu voor error dan?
Offline Wim - 23/08/2008 18:06 (laatste wijziging 24/08/2008 15:39)
Avatar van Wim Crew algemeen geen.... en er zitten (test) gegevens in de database die voldoen aan het zoekpatroon

//edit:
probleem gevonden!
- "release" is volgens mij een gereserveerd keyword door MySQL, ben hier in een ander bestand achter gekomen toen een simpele insert query niet werkte...
- als je met een full text search (zoals ik hier gebruik) meer dan de helft van de rijen uit een database selecteert, worden er geen rijen geretourneerd. Aangezien ik maar enkele rijen had selecteerde ik bijna altijd meer dan de helft van de rijen en werden er dus geen rijen geretourneerd
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s