MySQL Abfrage funktioniert nicht richtig
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
aktuelle url
aufruf
ausgeben
beginn
browser
code
dritten zeile
ergebnis
externen datei
genau url
klingen
ordern
tabelle
url
variable url
wissen
zeile
zuweisung
zweite url
-
Hallo liebe User,
dies ist mein erster Beitrag in diesem Forum und ich hoffe ihr werdet mir helfen können. Nun zum Thema:
Ich habe eine simple MySQL-Abfrage, die lautet:
Nebenbei bemerkt. Ich arbeite mit Wordpress.
$ergebnis = $mysqli->query("SELECT p.ID FROM wp_posts p WHERE p.post_content LIKE '%$url%' ORDER BY ID "); $erstring = $ergebnis -> fetch_array();
die Variable $url gibt die aktuelle url aus. Also wird geschaut ob die aktuelle Url in der Tabelle post_content vorhanden ist.
Doch sobald in der Tabelle zwei voneinander unabhängige Urls auftauchen passiert folgendes:
Nachdem ich die zweite Url in den post_content bereich hinzufüge und abspeicher wird das Ergebnis korrekt angezeigt, doch sobald ich den Browser refreshe verschwindet das Ergebnis und danach ist nichts mehr zu sehen.
Vielen Dank im Vorraus
Liebe Grüße
Vvendetta
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
$ergebnis = $mysqli->query("SELECT ID FROM wp_posts WHERE post_content LIKE '%" . $url . "%' ORDER BY ID"); $erstring = $ergebnis->fetch_array();
So reicht die Abfrage.
Ich würde mir testweise den Query ausgeben lassen, der beim Aufruf erzeugt wird und ggf. über phpMyAdmin oder dergleichen gegenprüfen.
$query = "SELECT ID FROM wp_posts WHERE post_content LIKE '%" . $url . "%' ORDER BY ID"; die($query);
Zudem wäre es interessant zu wissen, wie genau $url aufgebaut ist.
Beitrag zuletzt geändert: 15.3.2013 14:00:09 von fabo -
fabo schrieb:
So reicht die Abfrage.
Ich würde mir testweise den Query ausgeben lassen, der beim Aufruf erzeugt wird und ggf. über phpMyAdmin oder dergleichen gegenprüfen.
$query = "SELECT ID FROM wp_posts WHERE post_content LIKE '%" . $url . "%' ORDER BY ID"; die($query);
Das interessante ist dass zu beginn (die?) richtige query ausgegeben wird. Sobald ich den Browser neu lade verschwindet die Ausgabe wieder.
Zudem wäre es interessant zu wissen, wie genau $url aufgebaut ist.
Die $Url ist eine $_GET Abfrage. Und zwar wird aus einer externen Datei der Wert für $_SERVER['HTTP_HOST'] übergeben
// In einer seperaten Datein ]$urluebergabe = $_SERVER['HTTP_HOST']; // $url = $_GET['urluebergabe'];
-
vvendetta schrieb:
Die $Url ist eine $_GET Abfrage. Und zwar wird aus einer externen Datei der Wert für $_SERVER['HTTP_HOST'] übergeben
// In einer seperaten Datein ]$urluebergabe = $_SERVER['HTTP_HOST']; // $url = $_GET['urluebergabe'];
mal eine bescheidene Frage:
Warum die Schnörkel mit $_GET(), wenn es dir nur um den Wert für $_SERVER['HTTP_HOST'] geht?
Wenn du mit dem Superglobal $_GET() arbeiten willst, dann sollte auch die URL deiner Seite folgendermaßen aussehen:
die URL deiner Seite +?urluebergabe=der Wert von $_SERVER['HTTP_HOST']
Ansonsonsten läuft eine Abfrage von $_GET() ins Leere. -
vvendetta schrieb:
vollkommen irrelevant!
... Nebenbei bemerkt. Ich arbeite mit Wordpress.
yo mey! kurze kritik:$ergebnis = $mysqli->query("SELECT p.ID FROM wp_posts p WHERE p.post_content LIKE '%$url%' ORDER BY ID "); $erstring = $ergebnis -> fetch_array();
1. man schreibt eine (*)sql abfrage nie in eine zeile! deine abfrage lautet:
$q = <<< EOT SELECT p.ID FROM wp_posts p WHERE p.post_content LIKE '%$url%' ORDER BY ID EOT;
(das heißt heredoc schreibweise und weist nur vorteiele auf [erspart sogar die nötigung templates {hochgradig stupid!} zu verwenden]! sehr lesenswert ;) also daher$q = <<< EOT SELECT p.ID FROM wp_posts p WHERE p.post_content LIKE '%$url%' ORDER BY ID EOT; $ergebnis = $mysqli->query($q);
weil wenn du jetzt den fehler in der dritten zeile hast, kommt nicht die idiotische meldung 'error in ... 1 near '...' ...', sondern in zeile 3 (das ist doch zu schätzen! oder?)
2. ohne es zu prüfen, ob $ergebnis tatsächlich etwas verwertbares wäre (resource????) wertest du es aus!?
daher kommt direkt danach natürlich nicht$erstring = $ergebnis -> fetch_array();
sondern die zuweisung nach der überlegung anhand dessen: mysqli.errno (oder adequat!)
3. wenn das ergebnis stimmt(?), weist du es einer neuer variable zu! warum? ist die variable '$ergebnis' jetzt plötzlich in ungnade gefallen? du brauchst die neue variable nicht! du überlastest damit nur den server! (so banal das auch klingen mag!)
fabo schrieb:
... So reicht die Abfrage.
...$query = "SELECT ID FROM wp_posts WHERE post_content LIKE '%" . $url . "%' ORDER BY ID"; die($query);
in diesem fall ist es [das!: " . $url . "]wirklich nicht nötig! weil es nicht von php, sondern von mysql - richtig - gedeutet wird ;)
@vvendetta! poste hier bitte fehlermeldungen von php und/oder von mysql. sonst helfe dir gott ...
Beitrag zuletzt geändert: 16.3.2013 0:13:23 von czibere -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage