$wpdb->get_results macht mich Wahnsinnig

  • Hallo,
    Ich lerne gerade die ersten Schritte beim Plugin programmieren.


    Jetzt komme ich an ein Problemm, welches ich nicht verstehe.

    Ich such im Content nach <gs>(.*)</gs> also in dem speziellen Fall <gs>6811</gs>


    Die 6811 wird auch sauber auch dem Content extrahiert.


    Wenn ich jetzt eine SQL abfrage mache
    SELECT * FROM tbl_daten where tbl_daten_id = '" . $pid ."';";


    Oder

    SELECT * FROM tbl_daten where tbl_daten_id = $pid;

    Erhalte ich keine Daten.

    Setzte ich die $pid = 6811; per Code erhalte ich Daten.:shock:

    Kann mir das bitte jemand erklären? :confused::confused:


    $pid = 0; // Programm ID
    $pattern = '~<gs>(.*)</gs>~';

    $result = preg_match($pattern, $content, $subpattern);
    $pid = $subpattern[0];

    echo "subpattern:" . $pid . "<br/>";
    //$pid = 6811; // Programm ID

    // Get Datensätze
    global $wpdb;
    $sql = "SELECT * FROM tbl_daten where tbl_daten_id = '" . $pid ."';";


    echo $sql;
    $result = $wpdb->get_results( $sql );

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Müsste es nicht

    PHP
    $pid = $subpattern[1];

    heißen, wenn nur die Zahl gefragt ist?

    Zitat von Dokumentation

    Falls der Parameter matches angegeben wurde, wird er mit den Suchergebnissen gefüllt. $matches[0] enthält dann den Text, der auf das komplette Suchmuster passt, $matches[1] den Text, der auf das erste eingeklammerte Teilsuchmuster passt und so weiter.

  • Müsste es nicht

    PHP
    $pid = $subpattern[1];

    heißen, wenn nur die Zahl gefragt ist?

    Seltsam,mit $pid = $subpattern[1]; geht es.
    Allerdings bekomme ich mit [0] das gleiche Ergebnis nur das es eben nicht funktioniert.

    Meinen Lieben Dank an spickzettel.


    Wie kann ich den thread den jetzt als gelöst markieren?
    [COLOR=#000000][COLOR=#007700]
    [/COLOR][/COLOR]

  • In $subpattern[0] steht

    HTML
    <gs>6811</gs>

    Wenn man das ausgibt, werden die HTML-Tags <gs> nicht mit ausgegeben, sollten aber im Quelltext sichtbar sein. In der SQL-Abfrage sind sie dann aber auf jeden Fall dabei und es gibt keine Zeile, in der tbl_daten_id gleich <gs>6811</gs> ist.


  • Wenn ich jetzt eine SQL abfrage mache
    SELECT * FROM tbl_daten where tbl_daten_id = '" . $pid ."';";

    soetwas macht man nicht

    SQL-Injection
    http://de.wikipedia.org/wiki/SQL-Injection

    Wie unterscheide ich böse Variablen von guten?
    http://www.php-faq.de/q-security-variablen.html

    Bitte beachte auch die Security Hinweise im PHP Handbuch
    http://www.php.net/manual/de/security.php

    grummel

    ralf

    Mit offenen Augen träumen

  • r23 spricht es aus... hier eine andere Lösung:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!