php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.06.2010, 16:45  
Neuer Benutzer
 
Registriert seit: 17.06.2010
Beiträge: 9
PHP-Kenntnisse:
Anfänger
Bloodydead befindet sich auf einem aufstrebenden Ast
Standard 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
Bloodydead ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.06.2010, 17:18  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

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.
Trainmaster ist gerade online  
Alt 17.06.2010, 17:24  
Neuer Benutzer
 
Registriert seit: 17.06.2010
Beiträge: 9
PHP-Kenntnisse:
Anfänger
Bloodydead befindet sich auf einem aufstrebenden Ast
Standard

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
Bloodydead ist offline  
Alt 17.06.2010, 17:25  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

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.

Zitat:
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".

Geändert von Dark Guardian (17.06.2010 um 17:29 Uhr).
Dark Guardian ist offline  
Alt 17.06.2010, 17:27  
Neuer Benutzer
 
Registriert seit: 17.06.2010
Beiträge: 9
PHP-Kenntnisse:
Anfänger
Bloodydead befindet sich auf einem aufstrebenden Ast
Standard

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
Bloodydead ist offline  
Alt 17.06.2010, 17:30  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
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".
Dark Guardian ist offline  
Alt 17.06.2010, 17:35  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Was soll eigentlich die connect_db() für einen Rückgabewert haben??? TRUE und FALSE?
Trainmaster ist gerade online  
Alt 18.06.2010, 00:07  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

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.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline  
Alt 18.06.2010, 11:08  
Neuer Benutzer
 
Registriert seit: 17.06.2010
Beiträge: 9
PHP-Kenntnisse:
Anfänger
Bloodydead befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für die Hilfe.

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


Gruß Micha
Bloodydead ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
MySQL Abfrage mit PHP extrem langsam kip Datenbanken 6 24.08.2009 11:11
mysql abfrage mit count(*) und BETWEEN funktioniert nicht John Sear PHP Tipps 2009 11 25.06.2009 09:56
MySQL Abfrage als PHP class d3rbastl3r PHP Tipps 2008 2 11.06.2008 15:41
Frage: richtige SQL Abfrage von einer MySQL Spalte die SET werte besitzt Seb PHP Tipps 2008 2 29.05.2008 11:36
MySQL Abfrage macht Seite langsam Datenbanken 11 19.10.2006 19:38
MySQL Abfrage Von / Bis andrew22 Datenbanken 1 02.10.2006 11:04
MySQL - Abfrage: Unterschiedliche Ergebnisse aus PHP/manuell horstenpeter Datenbanken 3 16.07.2006 13:22
mysql abfrage in Schleife havok PHP Tipps 2006 6 09.05.2006 08:39
Abfrage bei mySQL 4 ApfeL Datenbanken 5 24.03.2006 18:53
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Wieso funktioniert mein MySQL nicht mehr ? Skazi Datenbanken 1 09.11.2005 14:49
MySQL UPDATE Befehl funktioniert nicht PHP Tipps 2005 6 24.01.2005 15:03
Abfrage funktioniert zwar, aber nicht korrekt Datenbanken 2 16.08.2004 09:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
pdo abfrage, php pdo abfrage, http://www.php.de/php-einsteiger/68994-pdo-mysql-abfrage-funktioniert-nicht.html, pdo mysql, mysql pdo, pdo abfragen, pdo mysql select, pdo mysql query, php pdo mysql, abfrage mit pdo, mysql standard abfragen anfänger, php pdo class, abfrage pdo mysql, mysql pdo daten abfragen, pdo abfrage php, pdo abfrage mit select from where, pdo while, php mysqli ansprechen, php pdo abfrage sql server, xampp mysql jede query in php ist false

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum