Wo liegt der Fehler

ben78

Mitglied
Hi Leutz,

ich habe folgende Query...
PHP:
$suchwort_array = explode(" ", $suchwort); 

$query = 'SELECT DISTINCT * FROM Tabelle WHERE '; 

for($i=0; $i < count($suchwort_array); $i++) 
{ 
$query .= "(MATCH (Title,ShortDescription,LongDescription,Category,Brand) AGAINST('%" . mysql_real_escape_string($suchwort_array[$i]) . "%') AND Brand LIKE '%" . mysql_real_escape_string($brand) . "%')"; 

if($i<count($suchwort_array)-1)
{
$query .= ' and ';  
}
}
$result = mysql_query($query);

...zu folgende Query umgewandelt, also per IF-Bedingung zerteilt und aus dem LIKE ein = gemacht:
PHP:
$suchwort_array = explode(" ", $suchwort); 

$query = 'SELECT DISTINCT * FROM Tabelle WHERE '; 

for($i=0; $i < count($suchwort_array); $i++) 
{ 
$query .= "MATCH (Title,ShortDescription,LongDescription,Category,Brand) AGAINST('%" . mysql_real_escape_string($suchwort_array[$i]) . "%')"; 

if($i<count($suchwort_array)-1)
{
$query .= ' and ';  
}
}
if ($brand)
{
if ($suchwort) $query .= " AND";
$query .= " Brand = '" . mysql_real_escape_string($brand) . "'";
}
$result = mysql_query($query);
Die Suche und die Ergebnisse funktioniert bzw. passen alle einwandfrei. Blos erhalte ich seit der neuen Query permanent folgende Fehlermeldung, wenn ich ausschließlich das Feld Brand für die Suche benutze. Die Ergebnisse zeigt er mir jedoch richtig an:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/search.html on line 127

Zeile 127 sieht so aus: $anzahl = mysql_num_rows($result);

Es wird sich mit Sicherheit um eine Klammer zu viel oder zu wenig handeln. Ich habe jetzt ca. 2 Stunden damit verbracht die Blöde Meldung zu bereinigen...allerdings ohne Erfolg, wie man sieht. Ich Bitte um Eure Hilfe, woran das liegen könnte.
...Und so sieht mein ECHO aus: SELECT DISTINCT * FROM Tabelle WHERE Brand = 'adidas' LIMIT 0,10
 
mysql_query gibt bei einem Fehler false zurück.

$result = mysql_query($query) or die mysql_error();
 
THX 4 that.
$result = mysql_query($query) or die mysql_error();

Es handelt sich in folgender Zeile um einen Syntaxfehler in Form von Gänsefüschen.
PHP:
$query .= " Brand = '" . mysql_real_escape_string($brand) . "'";
MySQL_ERROR meldet: Blabla...Syntaxfehler...near 'Brand = 'puma'' at line 1

Ich bin ums verrecken nicht in der Lage diesen Fehler auszumärzen. Jemand ne Idee?
 
Echo spuckt folgendes aus: SELECT DISTINCT * FROM Tabelle WHERE MATCH (Title,ShortDescription,LongDescription,Category,Brand) AGAINST('%%') Brand = 'Adidas'

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/search.html on line 129

MySQL_ERROR meldet nach wie vor: Blabla...Syntaxfehler...near 'Brand = 'puma'' at line 1


Jetzt sehe ich es. Es fehlt nach AGAINST (%%) das AND vor Brand
 
...anders. Es fehlt kein AND vor Brand sondern das hier ist zu viel: MATCH (Title,ShortDescription,LongDescription,Category,Brand) AGAINST('%%')
 
Wisst Ihr waaaaaaaaaaaaaaaaaaaat?

Ich habe den Fehler jetzt ausgemertzt.

Hier habe ich vor $query folgendes vergessen: if ($suchwort)
PHP:
$query .= "MATCH (Title,ShortDescription,LongDescription,Category,Brand) AGAINST('%" . mysql_real_escape_string($suchwort_array[$i]) . "%')";

VERY BIG THX @ ALL:p
 
Zurück