Ingo: PDO Datensatz auslesen geht mit ersten Query

Guten Morgen,

ich habe folgendes Problem, ich möchte über eine PDO Abfrage 2 Datensätze aus 2 unterschiedlichen Querys auslesen. Aber nur die erste Abfrage liefert Werte zurück, die 2.te Abfrage scheint leere Feldwerte zurück zu liefen.

  
class DB  
{  
    const DATABASE = 'homomatrix';  
    const HOST = 'localhost';  
    const USERNAME = 'root';  
    const PASSWORD = '@d130913';  
  
    static private $pdo;  
	  
    static public function singleton()  
    {  
        if (!is_object(self::$pdo))  
        {  
            self::$pdo = new PDO('mysql:dbname=' . self::DATABASE . ';host=' . self::HOST,  
                                    self::USERNAME,  
                                    self::PASSWORD);  
			self::$pdo->exec("set names utf8");  
        }  
        return self::$pdo;  
    }  
  
}  
  
/* 'SELECT country_name, country_code_char2, un_region, un_subregion FROM jom_countries WHERE country_name = ´$country´ LIMIT 1' */  
  
$st = DB::singleton()  
        ->prepare(  
            'select country_name, country_code_char2, un_region, un_subregion ' .  
            'from jom_countries ' .  
            'where country_name = :countrycode ' .  
            'limit 0,1');  
  
$countryCode = $country;  
			  
$st->bindParam(':countrycode', $countryCode, PDO::PARAM_STR);  
  
if ($st->execute())  
{  
    while ($row = $st->fetch(PDO::FETCH_OBJ))  
    {  
  
            $value_1 = $row->country_name . ', ' . $row->country_code_char2 . ', ' . $row->un_region . ', ' . $row->un_subregion ;  
            $k_country_name = $row->country_name;  
            $k_country = $row->country_code_char2;  
	    $k_un_region = $row->un_region;  
	    $k_un_subregion = $row->un_subregion;  
  
    }  
}  
  
/* 'SELECT state_subdivision_name, state_subdivision_code FROM jom_states_subdivisions WHERE state_subdivision_name = ´$state´ LIMIT 1' */	  
  
$st = DB::singleton()  
        ->prepare(  
            'select state_subdivision_name, state_subdivision_code ' .  
            'from jom_states_subdivisions ' .  
            'where state_subdivision_name = :statecode ' .  
            'limit 0,1');  
			  
$stateCode = $state;  
			  
$st->bindParam(':statecode', $stateCode, PDO::PARAM_STR, 10);  
  
if ($st->execute())  
{  
    while ($row = $st->fetch(PDO::FETCH_OBJ))  
    {  
			$value_2 = $row->row->state_subdivision_name . ', ' . $row->state_subdivision_code ;  
            $k_state_name = $row->state_subdivision_name;  
            $k_state = $row->state_subdivision_code;  
  
    }  
}  
  
/* Zu Prüfzwecken */  
echo "PDO Statement: <br />";  
echo "Teil 1:<br />";  
echo "VALUE 1: ".$value_1."<br />";  
echo "COUNTRYNAME: ".$k_country_name."<br />";  
echo "COUNTRY: ".$k_country."<br />";  
echo "UN_REGION: ".$k_un_region."<br />";  
echo "UN_SUBREGION: ".$k_un_subregion."<br />";  
echo "Teil 2:<br />";  
echo $value_2."<br />";  
echo $k_state_name."<br />";  
echo $k_state."<br />";  
# Länderkürzel entfernen  
$k_neustate = str_replace($k_country."-", "", $k_state);  
echo "Neustate:<br />".$k_neustate."Ende PDO Statement.<br /><br />";	  
  
flush();	  

Leider komme ich nicht darauf wo der Fehler liegt. Auch das erzeugen einer 2.ten DB-Class und über diese die Abfrage zu generieren, führte zu keinem Ergebnis?

Für Tips und Hilfestellungen wäre ich dankbar.

Mit freundlichen Grüßen,

Ingo

  1. Hello und guten Morgen,

    /* Zu Prüfzwecken */
    echo "PDO Statement: <br />";
    echo "Teil 1:<br />";
    echo "VALUE 1: ".$value_1."<br />";
    echo "COUNTRYNAME: ".$k_country_name."<br />";
    echo "COUNTRY: ".$k_country."<br />";
    echo "UN_REGION: ".$k_un_region."<br />";
    echo "UN_SUBREGION: ".$k_un_subregion."<br />";
    echo "Teil 2:<br />";
    echo $value_2."<br />";
    echo $k_state_name."<br />";
    echo $k_state."<br />";

    Länderkürzel entfernen

    $k_neustate = str_replace($k_country."-", "", $k_state);
    echo "Neustate:<br />".$k_neustate."Ende PDO Statement.<br /><br />";

    flush();
    [/code]

    Leider komme ich nicht darauf wo der Fehler liegt. Auch das erzeugen einer 2.ten DB-Class und über diese die Abfrage zu generieren, führte zu keinem Ergebnis?

    Wo hast Du denn die Status-/Fehlermeldungen der DB ausgewertet?

    Hast Du sich vielleicht beim zweiten Statement einfach irgendwo vertippt, so dass die DB die Anfrage nicht ausführen mag?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bikers-lodge.com
  2. Hallo,

    Danke hat sich erledigt, lag anscheinend nicht am Script, sondern daran das ich Zuhause wohl die neuere Version von XAMPP XAMPP 1.8.3 [PHP: 5.5.9] habe und dort scheint es nicht zu gehen. Hier im Betrieb auf  XAMPP 1.8.3 [PHP: 5.5.3] läuft es anscheinend einwandfrei.

    Mit freundlichen Grüßen,

    Ingo

    1. Hello,

      Danke hat sich erledigt, lag anscheinend nicht am Script, sondern daran das ich Zuhause wohl die neuere Version von XAMPP XAMPP 1.8.3 [PHP: 5.5.9] habe und dort scheint es nicht zu gehen. Hier im Betrieb auf  XAMPP 1.8.3 [PHP: 5.5.3] läuft es anscheinend einwandfrei.

      Das würde mir nicht reichen. ich würde die Ursache wisen wollen!

      Die "Nichtreaktion" bei diversen Scripten usw. lag bei mir in der letzten Zeit immer daran, dass ich den Editor mal wieder in der falschen Codierung benutzt habe oder habe öffen oder abspeichern lassen, oder welche Variante auch immer.

      Codierung richtig gestellt, schon kam wieder das gewünschte Ergebnis.

      Das Blöde ist, man sieht es machmal nicht. Aber es sind dann vermutlich Zeichen in der Datei, über die der Parser stolpert. Man sucht sich dämlich nach solchen Fehlern.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bikers-lodge.com
      1. Hello,

        Danke hat sich erledigt, lag anscheinend nicht am Script, sondern daran das ich Zuhause wohl die neuere Version von XAMPP XAMPP 1.8.3 [PHP: 5.5.9] habe und dort scheint es nicht zu gehen. Hier im Betrieb auf  XAMPP 1.8.3 [PHP: 5.5.3] läuft es anscheinend einwandfrei.

        Das würde mir nicht reichen. ich würde die Ursache wisen wollen!

        Die "Nichtreaktion" bei diversen Scripten usw. lag bei mir in der letzten Zeit immer daran, dass ich den Editor mal wieder in der falschen Codierung benutzt habe oder habe öffen oder abspeichern lassen, oder welche Variante auch immer.

        Codierung richtig gestellt, schon kam wieder das gewünschte Ergebnis.

        Das Blöde ist, man sieht es machmal nicht. Aber es sind dann vermutlich Zeichen in der Datei, über die der Parser stolpert. Man sucht sich dämlich nach solchen Fehlern.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        Hallo Tom,

        würde ich das beruflich machen, würde ich wohl auch gerne genauer die Fehlerursache wissen wollen. Da ich das aber "nur" im meinem Praktikum zu Fachinformatiker Systemintegration und nicht Anwendungsentwicklung mache. Reicht es wenn das Script nun läuft, weil sowas brauche ich in nächster Zeit sicher nicht so schnell wieder.

        Zudem hatte ich es vorher mit einer MySQL-Abfrage gemacht da funktionierte es einwandfrei. Aber seit PHP 5.5.9 bekommt man ja die Fehlermeldung das MySQL-Abfragen bald nicht mehr unterstütz wird und man MySQLi oder PDO verwenden sollte. Also habe ich das mal versucht.

        Liebe Grüße,

        Ingo

        1. Om nah hoo pez nyeetz, Ingo!

          würde ich das beruflich machen, würde ich wohl auch gerne genauer die Fehlerursache wissen wollen. Da ich das aber "nur" im meinem Praktikum zu Fachinformatiker Systemintegration und nicht Anwendungsentwicklung mache. Reicht es wenn das Script nun läuft, weil sowas brauche ich in nächster Zeit sicher nicht so schnell wieder.

          Vielleicht schlägst du aber trotzdem hin und wieder hier auf. Vermeide dann bitte Vollzitate. Sie stören nur den Lesefluss.

          Und: Auch oder gerade in einem Praktikum lohnt der Blick über den Tellerrand und wird auch gern gesehen.

          Matthias

          --
          Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Fest und Festräger.

        2. Hello,

          Danke hat sich erledigt, lag anscheinend nicht am Script, sondern daran das ich Zuhause wohl die neuere Version von XAMPP XAMPP 1.8.3 [PHP: 5.5.9] habe und dort scheint es nicht zu gehen. Hier im Betrieb auf  XAMPP 1.8.3 [PHP: 5.5.3] läuft es anscheinend einwandfrei.

          Da würde ich an Deiner Stelle nochmal ein wenig die Suchmaschinen quälen. Da wurde einiges geändert in der neuen Version des XAMPP, bzw. in seinen Komponenten.

          Der erste Fehler, auf den man läft, sind die geänderten Direktiven des Apachen für Virtual Hosts. Da muss man schon mal nachbessern, mwenn man alte Konfigurationsdateien übernimmt. Bei den Datenbankmodulen war aber auch irgendwas... Musst Du bitte aber mal selber suchen.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bikers-lodge.com
      2. Hello,

        Danke hat sich erledigt, lag anscheinend nicht am Script, sondern daran das ich Zuhause wohl die neuere Version von XAMPP XAMPP 1.8.3 [PHP: 5.5.9] habe und dort scheint es nicht zu gehen. Hier im Betrieb auf  XAMPP 1.8.3 [PHP: 5.5.3] läuft es anscheinend einwandfrei.

        Das würde mir nicht reichen. ich würde die Ursache wisen wollen!

        Die "Nichtreaktion" bei diversen Scripten usw. lag bei mir in der letzten Zeit immer daran, dass ich den Editor mal wieder in der falschen Codierung benutzt habe oder habe öffen oder abspeichern lassen, oder welche Variante auch immer.

        Codierung richtig gestellt, schon kam wieder das gewünschte Ergebnis.

        Das Blöde ist, man sieht es machmal nicht. Aber es sind dann vermutlich Zeichen in der Datei, über die der Parser stolpert. Man sucht sich dämlich nach solchen Fehlern.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        Hallo Tom,

        Nachtrag: Also es muss tatsächlich an der neuen PHP Version "PHP: 5.5.9" liegen. Da ich exakt das selbe Script wie ich es in der Firma eingespielt hatte, auf einen frisch installierten XAMPP 1.8.3 mit [PHP: 5.5.9] eingespielt habe und es dort nicht richtig läuft. Hat vielleicht damit zu tun, das PHP 5.5.3 VC9 die Installation von Visual C++ Redistributable for Visual Studio 2008 SP1 und die PHP 5.5.9 VC11 die Installation vo Visual C++ Redistributable for Visual Studio 2012 benötigt.

        Liebe Grüße,

        Ingo