kostenloser Webspace werbefrei: lima-city


MySQL Abfrage funktioniert nicht richtig

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    vvendetta

    vvendetta hat kostenlosen Webspace.

    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

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. $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
  4. Autor dieses Themas

    vvendetta

    vvendetta hat kostenlosen Webspace.

    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'];
  5. 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.
  6. vvendetta schrieb:
    ... Nebenbei bemerkt. Ich arbeite mit Wordpress.
    vollkommen irrelevant!

    $ergebnis = $mysqli->query("SELECT p.ID FROM wp_posts p WHERE p.post_content LIKE '%$url%' ORDER BY ID  ");
    $erstring = $ergebnis -> fetch_array();
    yo mey! kurze kritik:
    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
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!