Ankündigung

Einklappen
Keine Ankündigung bisher.

[Gelöst]Seltsames PDO Problem

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Gelöst]Seltsames PDO Problem

    Hallo!s
    Mir ist leider kein sinnvollelerer Threadtitel einfallen, aber es beschreibt die Situation schon ganz gut. Es geht um dieses kleine stückchen Code:

    PHP-Code:
    $sql 'SELECT `tagline`, `comment` FROM `links_settings` WHERE `id` = 1';

        try {
            
    $stmt $pdo->prepare($sql);
            
    $stmt->execute();
        } catch (
    PDOException $ex) {
            echo 
    $ex->getMessage();
            exit();
        }

        while(
    $link $stmt->fetch(PDO::FETCH_OBJ)) {
            
    $placeholderList = [
                
    '##placeholder-link-tagline##' => $link->tagline,
                
    '##placeholder-link-comment##' => $link->comment
            
    ];
        } 
    Das Problem ist, das die while-Schleife unter XAMPP (Windows/MacOS) funktioniert, aber unter Linux LAMP (Fedora/openSuSE) nicht funktioniert. Und ich verstehe nicht warum.
    Ich habe versucht mit PDO eine Fehlermeldungen abzugreifen, display_error aktiviert etc. und leider rein gar nichts erfahren. Die Schleife wird unter LAMP nicht ausgeführt und ich stehe auf dem Schlauch :-/

    Kennt jemand das Phänomen? Was mach ich falsch? Danke für Tipps und Hilfe

  • #2
    Kennt jemand das Phänomen?
    Der Datensatz existiert auf dem anderen System nicht?

    Außerdem kannst du dir viel von dem Eiertanz sparen:

    PHP-Code:
    $sql = <<<SQL
    SELECT
      `tagline` AS `##placeholder-link-tagline##`,
      `comment` AS `##placeholder-link-comment##`
    FROM
      `links_settings`
    WHERE
      `id` = 1
    SQL;
    $stmt $pdo->query($sql);
    $placeholderList $stmt->fetch(PDO::FETCH_ASSOC);

    if (!
    $placeholderList) {
      throw new 
    NotFoundexception( ... );

    Kommentar


    • #3
      Wenn die Schleife nicht läuft, liegt es daran, dass $link=false ist. Warum? Kein Plan, guck in die Datenbank, oder versuch's mal mit $stmt->fetchAll() - aber mit windows/Linux hat das nichts zu tun.
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar


      • #4
        Danke für die Hilfe! Ihr hattet recht Das habe ich vorher trotz Prüfung nicht gesehen. Der eigentliche Fehler war, das eine vorherige SQL-Anweisung die den Datensatz früher mal erstellt hat, eigentlich nicht funktionieren hätte dürfen, weil die Syntaktisch falsch war. Aus irgendeinem Grund wird die fehlerhafte SQL-Anweisung unter XAMPP jedoch "korrelt" ausgeführt, nicht aber unter LAMP. Ich habe mich zwischen XAMPP und LAMP Version wohl verfahren und sah den Fehler nicht mehr.

        Zusätzlichen Dank an Dormilich Das man es auch so machen kann, habe ich bis jetzt nicht gewusst. Ich werde es mal ausprobieren

        Kommentar


        • #5
          Bei PDO kann man sich getrost von while() verabschieden. Da ist bei mehreren Datensaetzen foreach() besser. Und bei einem einzigen Datensatz hat man noch nie eine Schleife gebraucht.

          Kommentar

          Lädt...
          X