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
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
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“);
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
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