php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.07.2011, 14:02  
Neuer Benutzer
 
Registriert seit: 01.06.2010
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
kalicki2k befindet sich auf einem aufstrebenden Ast
Standard MYSQL Klasse

Hallo Liebe Community,

ich hab mit meiner MySQL Klasse ein kleines Problem. Wenn ich die Klasse zwei mal aufrufe dann bekomme ich beim __destruct eine Fehlermeldung:

Warning: mysql_close(): 7 is not a valid MySQL-Link resource in mysql.class.php on line 29

Hier mein Code:
PHP-Code:
$mysql0 = new mysql();
$mysql1 = new mysql();
$mysql0->query("SELECT id FROM ".DB_PREFIX."session");
$mysql1->query("SELECT id FROM ".DB_PREFIX."session");
print_r($mysql0->select());
print_r($mysql1->select()); 

Und hier die MySQL Klasse:
PHP-Code:
<?php
// mySQL Klasse
// Version 0.0.0.6
// Link: http://playground.gsfx.de/bsp/MySQL%20Klasse/

class mysql{
    
    private 
$connected false;
    private 
$connect;
    private 
$result;
    private 
$mySQL_query;
    private 
$counter;
    
    public function 
__construct($host MYSQL_HOST$user MYSQL_USER$pw MYSQL_PW$db MYSQL_DB$charset "utf8"){
        
$this->connect = @mysql_connect($host$user$pw);
        if(
$this->connect === false)
            
$this->error("connect");
        if(@
mysql_select_db($db$this->connect) === false)
            
$this->error("select");
        else{
            if(@
mysql_query("SET CHARACTER SET '".$charset."'"$this->connect) === false)
                
$this->error("charset");
            
$this->connected true;
        }
    }
    public function 
__destruct(){
        
mysql_free_result($this->result);
        if (
mysql_close($this->connect) === false)
            
$this->error("close");
    }
    public function 
query($query){
        
$this->mySQL_query $query;
        
$this->counter=NULL;
        
$this->result=@mysql_query($this->mySQL_query,$this->connect);
        if (
$this->result === false)
            
$this->error("query");

    }
    public function 
select($typ "multi"){
        if(
$typ == "uni")
            
$array = @mysql_fetch_assoc($this->result);
        elseif(
$typ == "multi"){
            while(
$row = @mysql_fetch_assoc($this->result))
                
$array[] = $row;
        }
        return 
$array;
    }
    public function 
count(){
        if(
$this->result !== false){
            if(
$this->counter==NULL && is_resource($this->result))
                
$this->counter=mysql_num_rows($this->result);
            return 
$this->counter;
        }
    }
    public function 
error($error_type){
        switch(
$error_type){
            case 
"connect":
            
$text "Beim &Ouml;ffnen der Verbindung ist ein Fehler aufgetreten.<br />";
            break;
            
            case 
"select":
            
$text "Beim Ausw&auml;hlen der Datenbank ist ein Fehler aufgetreten.<br />";
            break;
            
            case 
"charset":
            
$text "Falscher Zeichensatz.<br />";
            break;
            
            case 
"close":
            
$text "Beim Schlie&szlig;en der Verbindung ist ein Fehler aufgetreten.<br />";
            break;
            
            case 
"query":
            
$text "W&auml;hrend folgender Abfrage ist ein Fehler aufgetreten: <strong>".$this->mySQL_query."</strong><br />";
            break;
            
            default:
            
$text "Es ist folgender, unbekannter Fehler aufgetreten: ".$error_type;
        }
        if(
$this->connected)
            
$text .= "Fehler-Nummer: <strong>".@mysql_errno($this->connect)."</strong><br />Fehler-Beschreibung: <strong>".@mysql_error($this->connect)."</strong>";
        echo 
$text."\n";
    }
}
?>
Muss das zu noch sagen, das das meine erste Klasse ist und ich hab damit noch nicht so viel Erfahrung habe. Deshalb kann ich mir denn Fehler nicht erklären.

Danke schon im voraus.


Gruß
Kalicki2k
kalicki2k ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.07.2011, 14:15  
Erfahrener Benutzer
 
Registriert seit: 13.05.2011
Beiträge: 188
PHP-Kenntnisse:
Fortgeschritten
php1704 wird schon bald berühmt werden
Standard

http://de.php.net/manual/en/function.mysql-connect.php

Der 4. Paramater (Default: false)

new_link
If a second call is made to mysql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. The new_link parameter modifies this behavior and makes mysql_connect() always open a new link, even if mysql_connect() was called before with the same parameters. In SQL safe mode, this parameter is ignored.

Defaultmäßig macht er bei den selben Zugangsdaten also gar keine 2. Verbindung auf.

Grüße.
php1704 ist offline   Mit Zitat antworten
Alt 06.07.2011, 14:35  
Neuer Benutzer
 
Registriert seit: 01.06.2010
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
kalicki2k befindet sich auf einem aufstrebenden Ast
Standard

Hey, danke das war ja einfach

LG
Kalicki2k
kalicki2k ist offline   Mit Zitat antworten
Alt 06.07.2011, 16:19  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

aber vorsicht - unbegrenzt solltest du das nicht machen - es hatte seinen Sinn, dass die connect-Methode standardmäßig nur guckt, ob die Verbindung schon steht und in diesem Fall dann die alte Verbindung liefert -

Im Regelfall gibts nämlich eine Begrenzung für die gleichzeitigen offenen Verbindungen zur Datenbank - der ist gar nicht mal so hoch .....

das was in folgendem Artikel steht gilt im Prinzip auch für die Bedienung von PHP aus
http://dev.mysql.com/doc/refman/5.1/...nnections.html

also Vorsicht beim öffnen von sehr vielen Verbindungen (eventuell rutscht einem der Aufruf zum Connect mal in eine Schleife - ist beim normalen Vorgehen kein Problem - aber bei dir jetzt )
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 06.07.2011, 16:27  
Neuer Benutzer
 
Registriert seit: 01.06.2010
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
kalicki2k befindet sich auf einem aufstrebenden Ast
Standard

Hmm dann sollte ich mal einen Zähler einbauen wie oft die Verbindung geöffnet wurde und beim descrutor wieder abziehen und nur bei count = 1 die Datenbank wieder schließen... oder?

Weil das Problem kommt nur weil er eine bestehende Verbindung schließen will die aber noch offen bleiben soll... glaub ich mal
Gruß
Kalicki2k
kalicki2k ist offline   Mit Zitat antworten
Alt 06.07.2011, 16:42  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.167
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Die Lösung wäre zu überlegen, ob Du 1. mehrere Verbindungen brauchst und 2. ob es notwendig ist, die Verbindungen manuell zu schließen, da PHP das am Ende des Skripts eigentlich automatisch macht.
xm22 ist offline   Mit Zitat antworten
Alt 06.07.2011, 17:02  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von xm22 Beitrag anzeigen
und 2. ob es notwendig ist, die Verbindungen manuell zu schließen, da PHP das am Ende des Skripts eigentlich automatisch macht.
Iiiiieh sowas gehört zum guten Ton beim Programmieren: alles, was DU öffnest, hast DU auch wieder zu schliessen.

Gewöhn dir sowas bloß nicht an, es kommt die Zeit da muss man auf eine andere Programmiersprache wechseln, die nicht mehr so gnädig ist und für einen den Tisch abräumt...
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 06.07.2011, 17:09  
Neuer Benutzer
 
Registriert seit: 01.06.2010
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
kalicki2k befindet sich auf einem aufstrebenden Ast
Standard

ja deswegen hab ich im destruct mysql close drin aber ich denke ich benne destruct einfach zur close um und ruf die dann am schluss der index einmal auf und dann kann ich die klasse so oft verbinden wie ich will und new_link setz ich wieder auf default dann hat er immer nur eine verbindung

gruß
kalicki2k
kalicki2k ist offline   Mit Zitat antworten
Alt 06.07.2011, 17:28  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Gewöhn dir sowas bloß nicht an, es kommt die Zeit da muss man auf eine andere Programmiersprache wechseln, die nicht mehr so gnädig ist und für einen den Tisch abräumt...
Find ich totalen Quatsch. Da hast Du nach PHP sowieso einiges, was DU Dir abgewöhnen musst.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 06.07.2011, 17:45  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Hier tauchen Leute im Forum auf, deren Scripte "out of memory" laufen, weil die Programmierer ein korrektes Resourcenhandling nicht beherrschen, und du tust das als "Quatsch" ab?
Sorry, aber DAS ist für mich nicht nachvollziehbar...
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Antwort


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] Datensätze von einer MySQL in eine andere MySQL Datenbank abgleichen Marvin75 Datenbanken 7 10.06.2011 18:00
PHP Zugriff auf MySQL Community Server gewähren daemonTutorials Datenbanken 8 21.02.2011 12:28
MySQL Datentransfer (Dateigroesse 4MB) via Shell Zugang oder einfacher promoterlv Datenbanken 1 14.11.2010 22:12
[Erledigt] PHP bekommt keine Verbindung zu MySQL SaKe Datenbanken 15 20.09.2010 14:45
Klasse für Objekteigenschaft erzeugen? Asipak PHP-Fortgeschrittene 25 30.05.2009 19:45
[Erledigt] Kann keine Umlaute im mysql client eingeben Oger Datenbanken 9 02.04.2009 11:54
MySQL Konsole und Umlaute unter Windows [LÖSUNG] f4ckm5 Datenbanken 8 30.03.2009 22:10
[Erledigt] Eine klasse einbinden newWorldOrder PHP Tipps 2009 2 23.02.2009 19:32
MySQL Klasse Gödda PHP Tipps 2009 8 17.02.2009 01:56
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
tutorial mysql klassen im oop projekt phpdummi Beitragsarchiv 4 17.01.2007 20:17
MySQL - Klasse: Wie da mysql_close benutzen Igäl PHP Tipps 2006 5 01.10.2006 23:09
mysql klasse - handling mehrerer connections mrSpok PHP Tipps 2006 5 14.04.2006 01:05
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mysql klasse, mysql klasse php, php mysql class, php5 mysql klasse 2011, mysql klassen, php mysql __destruct, mysql class, php sql klasse, php mysql count klasse, php mysql connect not false, if($connect == false ), mysql class php, php class destruct mysql connection, \7 is not a valid mysql-link resource in\ vbulletin, php5 mysql klasse, php mysql class counter, php mysql klasse mit typ, php mysql class 2011, mysql class 2011, mysql klasse php5 2011

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:59 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