MySQL Abfrage falsch

Hallo,

ich habe jetzt alle Fehler aus meinem Code entfernt bis auf diesen:

SELECT * FROM Searchengine WHERE titel LIKE %{$suche}% OR meta LIKE %{$suche}% OR beschreibung LIKE %{$suche}% ORDER BY pr DESC

Er sagt mir:

Verbindung zum Datenbankserver erfolgreich

Anfrage fehlgeschlagen: 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 '%ADS% OR meta LIKE %ADS% OR beschreibung LIKE %ADS% ORDER BY pr

Danke schon jetzt für Hilfe

Stephan

Versuch es mal mit nur einem ‚xxx LIKE yyy‘ und guck mal was dann kommt. Sehe zumindest so keinen Fehler… Oder mach es doch mal ohne die „{“ und „}“

SELECT * FROM Searchengine WHERE titel LIKE %{$suche}% OR meta
LIKE %{$suche}% OR beschreibung LIKE %{$suche}% ORDER BY pr
DESC

Hi also ich kenne sowas nicht.
Ich kenne LIKE nur so „%$suche%“. Hast du dich " vergessen ?

Sebasitan

Hi,

das {$suche} stimmt, habe es ausprobiert. Ist vielleicht doch was falsch?:

<?php /* Verbindung aufbauen, auswählen einer Datenbank */
$link = mysql\_connect("", "", "") or die("Keine Verbindung möglich: " . mysql\_error()); print "Verbindung zum Datenbankserver erfolgreich"; mysql\_select\_db("") or die("Auswahl der Datenbank fehlgeschlagen"); // ausführen einer SQL Anfrage $query = "SELECT \* FROM Searchengine WHERE titel LIKE %{$suche}% OR meta LIKE %{$suche}% OR beschreibung LIKE %{$suche}% ORDER BY pr DESC"; $result = mysql\_query($query) or die("Anfrage fehlgeschlagen: " . mysql\_error()); // Ausgabe der Ergebnisse in HTML print " \n"; while ($ue = mysql\_fetch\_array($result, titel)) while ($lk = mysql\_fetch\_array($result, link)) while ($bs = mysql\_fetch\_array($result, beschreibung)) { print "\t\n"; print "\t\t[$ue](%2524link)\n"; print "\t\n"; } print "\n"; // Freigeben des Resultsets mysql\_free\_result($result); // schliessen der Verbinung mysql\_close($ue); mysql\_close($lk); mysql\_close($bs); ?\> Als Fehlermeldung kommt was ich oben schon geschrieben habe. Er sagt mir ja Anfrage fehlgeschlagen, wo liegt das Prob? Bitte helft mir, ich habe auch keine Möglichkeit in das Manual zu gehen, meine Maus ist schrott und ich kann nur mit dem Tabulator überall durch, was ein Haufen Zeit kostet... Liebe grüße Stephan

Hi,

entweder liegt es an dem $query = … oder
an den Klammern (vor SELECT und nach DESC).
Siehe unten.

// ausführen einer SQL Anfrage
**mysql_query = („SELECT * FROM Searchengine WHERE titel LIKE
%{$suche}% OR meta LIKE %{$suche}% OR beschreibung LIKE
%{$suche}% ORDER BY pr DESC“);

Hoffe, das hielft dir weiter.

Puma**

Immernoch das gleiche, jetzt sieht es also so aus:

$result = mysql_query(„SELECT * FROM […] ORDER BY pr DESC“)

Danke aber trotzdem

Stephan

Hallo,

ich habe jetzt alle Fehler aus meinem Code entfernt bis auf
diesen:

Hallo, versuche das mal:

SELECT \* FROM Searchengine WHERE titel LIKE '%{$suche}%' OR meta
LIKE '%{$suche}%' OR beschreibung LIKE '%{$suche}%' ORDER BY pr
DESC

Alexander

P.S.: Sofern die mySQL-Version aktuell ist, solltest du so etwas lieber per FULLTEXT Index und MATCH(…) machen…

Trotzdem ein Fehler
Also, jetzt sieht mein Code so aus:

<?php /* Verbindung aufbauen, auswählen einer Datenbank */
$link = mysql\_connect("", "", "") or die("Keine Verbindung möglich: " . mysql\_error()); print "Verbindung zum Datenbankserver erfolgreich"; mysql\_select\_db("") or die("Auswahl der Datenbank fehlgeschlagen"); // ausführen einer SQL Anfrage $result = mysql\_query("SELECT \* FROM Searchengine WHERE titel LIKE '%$suche%' OR meta LIKE '%$suche%' OR beschreibung LIKE '%$suche%' ORDER BY pr DESC") or die("Anfrage fehlgeschlagen: " . mysql\_error()); // Ausgabe der Ergebnisse in HTML print " \n"; while ($ue = mysql\_fetch\_array($result, titel)) while ($lk = mysql\_fetch\_array($result, link)) while ($bs = mysql\_fetch\_array($result, beschreibung)) { print "\t\n"; print "\t\t[$ue](%2524link)\n"; print "\t\n"; } print "\n"; // Freigeben des Resultsets mysql\_free\_result($result); // schliessen der Verbinung mysql\_close($link); ?\> und er sagt: Warning: mysql\_fetch\_array(): The result type should be either MYSQL\_NUM, MYSQL\_ASSOC or MYSQL\_BOTH. in /home/www/web1027/html/de/search/ergebnis.php3 on line 253 Was heisst das und wie kann ich das beheben? Danke schon jetzt Stephan

Hi Stephan,

das Problem ist nicht die SQL-Abfrage - die funktioniert so. Kleiner Tipp fürs SQL-Debugging: einfach vor der eigenlichen Abfrage ein Echo mit dem gleichen String übertragen, die Ausgabe kopieren und in phpMyAdmin testen - das klappt immer ;o)
Der von Dir verursachte Fehler findet sich etwas tiefer - bei Deinen mysql_fetch_array-Befehlen. Wenn Du einen zweiten Parameter angeben willst, ist das immer ein Ergebnistyp - also MYSQL_ASSOC, MYSQL_NUM oder MYSQL_BOTH. Was Du vermutlich erreichen möchtest, ist die Ausgabe der einzelnen Felder?
Da Du keine getrennten Ergebnisse zurückerhältst, sondern Datensätze, in denen alle Felder Deines Abfrageergebnisses enthalten sind, reicht hier ein einfaches

while ($ue = mysql_fetch_array($result)) {
echo „Titel: " . $ue[„titel“] .“
";
echo „Link: " . $ue[„link“] .“
";
echo „Beschreibung: " . $ue[„beschreibung“] .“
";
echo "— nächster Treffer —
";
}

an Stelle Deiner 3 While-Anweisungen.

Viel Erfolg
Schoe