Ankündigung

Einklappen
Keine Ankündigung bisher.

PDO MySQL abfrage funktioniert nicht

Einklappen

Neue Werbung 2019

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

  • PDO MySQL abfrage funktioniert nicht

    Servus an alle,

    mein Problem ist.

    Ich habe eine Class MySQL in dieser befinden sich 2 Methoden, eine zum verbinden mit der DB und eine zum lesen/schreiben.
    Das verbinden und das schreiben funktioniert einwandfrei, nur das lesen gar nicht.

    Das ist meine SQL Class:
    PHP-Code:
    class mysql {

        private 
    $mysql_connect;
        private 
    $ergebnis;

        public function 
    connect_db($host,$mysql_database$user,$pass) {
            
    $this->mysql_connect = new PDO('mysql:host='.$host.';'.'dbname='.$mysql_database$user$pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>  'SET NAMES \'UTF8\''));
            if (! 
    $this->mysql_connect) {
                echo 
    "<p>Keine Verbindung zum Datenbank-Server." mysql_errno() . __FILE__ __LINE__;
                return 
    false;
            } else {
                return 
    true;
            }
        }
      
        function 
    query($sql$daten) {
            
    $ergebnis $this->mysql_connect->prepare($sql);
            
    $ergebnis->execute($daten);
            if (! 
    $ergebnis) {
                echo 
    "<p> Fehler beim Schreiben des Datensatzes." mysql_error();
                return 
    false;
            } else {
                return 
    true;
            }
        }
        function 
    get_ergebnis() {
            return 
    $this->ergebnis;
        }
        

    ansprechen tu ich die Query Methode beim schreiben mit

    PHP-Code:
    $sql "INSERT INTO homepage (anrede) VALUES (:anrede)";
    $db = new mysql();
    $db->connect_db($host$mysql_database$user$pass);
    $db->query($sql$_SESSION); 
    soweit funktioniert auch alles.
    Beim abfragen mach ich

    PHP-Code:
    require_once    ('lib/_mysql.php');
    require_once    (
    'lib/_config.inc.php');

        
    $select "SELECT * FROM homepage WHERE id = :id";
        
    $daten = array('id'    => 55232);

        
    $abfrage = new mysql();
        
    $test = new mysql();
        
    $abfrage->connect_db($host$mysql_database$user$pass);
        
    $abfrage->query($select$daten);
        
    print_r ($abfrage); 
    als ausgabe krieg ich dann
    Code:
    mysql Object ( [mysql_connect:mysql:private] => PDO Object ( ) [ergebnis:mysql:private] => )
    auch wenn ich über die getter funktion drauf zu greif, krieg ich nur
    Code:
    mysql Object ( [mysql_connect:mysql:private] => [ergebnis:mysql:private] => )
    langsam bin ich am verzweifeln, weil ich einfach nicht weiter weiß. Wahrscheinlich ist es nur ein einfacher Denkfehler von mir.
    Ich freue mich auf jede Hilfe und vielen Dank schon im vorraus.


    Gruß Micha

  • #2
    PHP-Code:
    $sql "SELECT * FROM homepage WHERE id = (:id)";
    $abfrage = new mysql();
    $abfrage->connect_db($host$mysql_database$user$pass); 
    $abfrage->prepare($sql);
    $abfrage->bindParam(':id''55232');
    $abfrage->execute();
    $result $abfrage->fetchColumn();
    print 
    $result
    Versuch's mal damit.

    Kommentar


    • #3
      Dank dir für die schnelle antwort.

      Hab es grad getestet nun krieg ich als Fehler
      Code:
      Fatal error: Call to undefined method mysql::prepare() in C:\xampp\htdocs\Anmeldescript\abfrage.php  on line 8
      line 8 ist
      PHP-Code:
      $abfrage->prepare($sql); 
      der fehler sagt ja aus, dass ich die methode in der klasse nicht definiert habe.
      aber perpare ist doch eine schon definierte klasse, oder? warum nimmt er die dann nicht?


      Gruß Micha

      Kommentar


      • #4
        PHP-Code:
            function query($sql$daten) {
                
        $ergebnis $this->mysql_connect->prepare($sql);
                
        $ergebnis->execute($daten);
                if (! 
        $ergebnis) {
                    echo 
        "<p> Fehler beim Schreiben des Datensatzes." mysql_error();
                    return 
        false;
                } else {
                    return 
        true;
                }
            } 
        1. $this->ergebnis wird da nirgendwo gesetzt, kann also nur leer sein

        2. !$ergebnis ist Unfug weil $ergebnis immer vom Typ PDOStatement sein wird.

        der fehler sagt ja aus, dass ich die methode in der klasse nicht definiert habe.
        aber perpare ist doch eine schon definierte klasse, oder? warum nimmt er die dann nicht?
        Gibt es in deiner Klasse "mysql" die Methode prepare()? Nein. Von welchen Typ ist $abfrage? -> mysql.

        prepare() ist eine Methode der Klasse PDO, keine Klasse.
        "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

        Kommentar


        • #5
          ok jetzt weiß ich warum es nicht geht, aber wie krieg ich das gewünschte resultat hin?

          Edit:

          sry meinte auch methode und nicht Klasse

          Kommentar


          • #6
            Zitat von Bloodydead Beitrag anzeigen
            ok jetzt weiß ich warum es nicht geht, aber wie krieg ich das gewünschte resultat hin?

            Edit:

            sry meinte auch methode und nicht Klasse
            PHP: PDOStatement - Manual

            Lies dir durch was die Klasse PDOStatement macht. Die hat noch mehr Methoden.
            "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

            Kommentar


            • #7
              Was soll eigentlich die connect_db() für einen Rückgabewert haben??? TRUE und FALSE?

              Kommentar


              • #8
                Die ganze Klasse stuelpt nur nochmal eine unnoetige Schicht ueber den PDO Zugriff ohne erkennbaren Mehrwert. Lass die ganze Klasse weg und greif direkt auf PDO zu.
                "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

                Kommentar


                • #9
                  Vielen Dank für die Hilfe.

                  Ich hab nun die Klasse gelöscht und einfach funktionen zum verbinden usw. gemacht.


                  Gruß Micha

                  Kommentar

                  Lädt...
                  X