# Suche sichere Mysql Connection Class



## starfoxfs (4. Februar 2008)

Hallo zusammen,

Ich suche eine sichere Mysql Connection Class basierend auf PHP5. Hat einer vll einen Link oder gibt es ein Tutorial dazu ?


----------



## Flex (4. Februar 2008)

MySQLi
PDO

Warum nicht eine von den bereits implementierten Möglichkeiten nutzen?


----------



## tobias_petry (4. Februar 2008)

was heisst sicher?


----------



## mAu (4. Februar 2008)

Was heißt MySQL-_Connection_-Class? Für mich ist das:

```
class MySQLConnect
{
    public function __construct($host, $user, $pass)
    {
        return mysql_connect($host, $user, $pass);
    }
}
```


----------



## starfoxfs (4. Februar 2008)

Genau sowas


----------



## 28dayslater (4. Februar 2008)

Falls sie dir hilft, einfach aber (für mich) gut


```
<?php
$db=new mysql($db_host,$db_user,$db_password,$db_database);

class mysql
{
    var $link;
    var $result;


    function mysql($host,$user,$password,$database) {
        $this->link=mysql_connect($host,$user,$password);
        mysql_select_db($database,$this->link);
    }


    function query($query) {
        $this->result= mysql_query($query,$this->link);
    }


    function fetch() {
        while ($row=mysql_fetch_assoc($this->result))
        return $row;
    }
}

?>
```


Diese kannst du dann natürlich mit Fehler-Report umschreiben usw. aber vielleicht hilft dir das als Anfang


----------



## starfoxfs (11. Februar 2008)

Wie muss ich die von 28dayslater genannte Class dann anwenden ?


```
$sql = "SELECT * FROM Tabelle ORDER BY id";
$result = $this->mysql->query($result)or die(mysql_error());
while ($modell = $this->mysql->fetch($sql))
{
```

funktioniert nicht


----------



## Loomis (11. Februar 2008)

So ungefähr...

```
$db = new mysql;
$db->mysql();

$sql = "SELECT * FROM Tabelle ORDER BY id"; 
$result = $db->query($result)or die(mysql_error()); 
while ($modell = $db->fetch($sql)) 
{
```


----------



## starfoxfs (11. Februar 2008)

Warning: Missing argument 1 for mysql() in ... on line 21

Warning: Missing argument 2 for mysql() in ... on line 21

Warning: Missing argument 3 for mysql() in ... on line 21

Warning: Missing argument 4 for mysql() in ... on line 21

Notice: Undefined variable: host in ... on line 22

Notice: Undefined variable: user in ... on line 22

Notice: Undefined variable: pass in ... on line 22

Warning: mysql_connect() [function.mysql-connect]: Access denied for user: 'wwwrun@localhost' (Using password: NO) in ... on line 22


Wo liegt hier mein Fehler ?


```
$db_host = "localhost";
$db_database = "db";  // Gewünschter Datenbankname angeben
$db_user = "db";  // Gewünschter Datenbank Benutzername angeben
$db_pass = "pw"; // Datenbank Password

$db = new mysql($db_host,$db_user,$db_pass,$db_database);

class mysql
{
    var $link;
    var $result;


    function mysql($host,$user,$pass,$database) {
        $this->link=mysql_connect($host,$user,$pass);
        mysql_select_db($database,$this->link);
    
	}



    function query($query) {
        $this->result= mysql_query($query,$this->link);
    }


    function fetch() {
        while ($row=mysql_fetch_assoc($this->result))
        return $row;
    }
	
	
}
```

Example


```
$db = new mysql;
$db->mysql(); 

$sql = "SELECT * FROM tabelle ORDER BY id";
$result = $db->query($sql)or die(mysql_error());
while ($modell = $db->fetch($result))
{
```


----------



## Loomis (11. Februar 2008)

Versuchs mal so:


```
class mysql 
{ 
    var $link; 
    var $result;
    var $host = 'host';
    var $user = 'user';
    var $pass = 'pass';
    var $database = 'db';


    function mysql($host,$user,$pass,$database) { 
        $this->link=mysql_connect($host,$user,$pass); 
        mysql_select_db($database,$this->link); 
     
    }
```


----------



## starfoxfs (11. Februar 2008)

Habs mal so probiert, keine Chance selber Fehler siehe oben


----------



## Loomis (11. Februar 2008)

Mal so, und mach alles weg was vor der Klasse steht.


```
class mysql  
{  
    var $link;  
    var $result; 
    var $host = 'host'; 
    var $user = 'user'; 
    var $pass = 'pass'; 
    var $database = 'db'; 


    function mysql() {  
        $this->link=mysql_connect($host,$user,$pass);  
        mysql_select_db($database,$this->link);  
      
    }
```

//edit sagt:

also das hier weg machen:


```
$db_host = "localhost"; 
$db_database = "db";  // Gewünschter Datenbankname angeben 
$db_user = "db";  // Gewünschter Datenbank Benutzername angeben 
$db_pass = "pw"; // Datenbank Password 

$db = new mysql($db_host,$db_user,$db_pass,$db_database);
```


----------



## starfoxfs (11. Februar 2008)

Selber Fehler leider


----------



## Loomis (11. Februar 2008)

Immernoch dieser 


```
Warning: Missing argument 1 for mysql() in ... on line 21

Warning: Missing argument 2 for mysql() in ... on line 21

Warning: Missing argument 3 for mysql() in ... on line 21

Warning: Missing argument 4 for mysql() in ... on line 21

Notice: Undefined variable: host in ... on line 22

Notice: Undefined variable: user in ... on line 22

Notice: Undefined variable: pass in ... on line 22
```


----------



## starfoxfs (11. Februar 2008)

Genau dieser Fehler


----------



## Loomis (12. Februar 2008)

```
class mysql  
{  
    var $link;  
    var $result; 
    var $host = 'host'; 
    var $user = 'user'; 
    var $pass = 'pass'; 
    var $database = 'db'; 


    function mysql() {  
        $this->link=mysql_connect($this->host,$this->user,$this->pass);  
        mysql_select_db($this->database,$this->link);  
      
    }
```

So vielleicht, sonst weis ich auch nicht


----------



## Gumbo (12. Februar 2008)

Wozu die Variablen wenn die Werte doch sowieso fix sind?


----------



## Loomis (12. Februar 2008)

Keine Ahnung, ist ja nicht mein Script.
Da waren von Anfang an Variablen drin, also dachte ich das soll so sein


----------



## starfoxfs (13. Februar 2008)

So ich habs nun mal ohne Fehler nur die Connection zur DB


```
class mysql   
{   
    var $link;   
    var $result;  
    var $db_host = 'host';  
    var $db_user = 'user';  
    var $db_pass = 'pass';  
    var $db_name = 'db';  


    function connect() {   
        $this->link=mysql_connect($this->$db_host,$this->$db_user,$this->$db_pass);   
        mysql_select_db($this->$db_name,$this->link);   
        }
    }
```


----------



## starfoxfs (13. Februar 2008)

Ok hab se jetzt gleichmal erweitert mit Error Handler, das auslesen des Query´s funktioniert allerdings nicht einer ne Idee warum ?


```
class mysql   
{   
// Configuration 
    var $db_host = 'host';  
    var $db_user = 'user';  
    var $db_pass = 'pass';  
    var $db_name = 'name';  
// Configuration

    var $link;   
    var $result;  
    var $connect;

// Verbindung zur Datenbank herstellen mit Error Handler Start
    function db_connect() {   
        $db_connect =@mysql_connect($this->db_host,$this->db_user,$this->db_pass);

		if(! $db_connect) {
$this->error_handler('Ein Fehler ist beim verbinden zur Datenbank aufgetreten:<br>' . mysql_error(). "</p>");  
             } 
// Verbindung zur Datenbank herstellen mit Error Handler

// Datenbank selectieren
        mysql_select_db($this->db_name,$this->link); 
// Datenbank selectieren		

		if(mysql_error()) {
$this->error_handler('Ein Fehler ist beim verbinden zur Datenbank aufgetreten:<br>' . mysql_error(). "</p>");
		     }
		
		$this->db_connect = $db_connect;
  
        }
// Verbindung zur Datenbank herstellen mit Error Handler Ende

// Query erzeugen
     function query($query) {
     $result= mysql_query($query,$this->link);
     $row=mysql_fetch_assoc($result);
     return $row;
                 }  

		
    }
```

So wird ausgelesen :


```
include "./datenbank.php";

$db = new mysql();


$sql = $db->query("SELECT * FROM Tabelle");
echo $sql["bla"];
```

Angezeigt wird nix


----------



## Flex (13. Februar 2008)

Wo wird $link in deiner Klasse definiert?
Du speicherst die Verbindung gar nicht in dieser Variable, so das alle anderen Funktionsaufrufe, die $link verwenden, ebenfalls fehlschlagen.


----------



## Dennis Wronka (15. Februar 2008)

Zu dem Thema hab ich auch eine Klasse anzubieten. Ist fuer PHP5 geschrieben und bietet Support fuer MySQL, PostgreSQL und MSSQL.
Ich hab sogar eine Funktion eingebaut die zwischen den einzelnen SQL-Dialekten uebersetzt; 100% funktioniert die nicht, aber fuer viele Abfragen ganz gut.
Hier kannst Du die Klasse finden.


----------



## Fabsch (15. Februar 2008)

Hallo,

du musst auch an das Konstrukt der Klasse die Parameter übergeben, so wie vor der Klasse:

```
$db_host = "localhost";  
$db_database = "db";  // Gewünschter Datenbankname angeben  
$db_user = "db";  // Gewünschter Datenbank Benutzername angeben  
$db_pass = "pw"; // Datenbank Password  

$db = new mysql($db_host,$db_user,$db_pass,$db_database);
```

Dann also das ganze so machen:

```
$db_host = "localhost";  
$db_database = "db";  // Gewünschter Datenbankname angeben  
$db_user = "db";  // Gewünschter Datenbank Benutzername angeben  
$db_pass = "pw"; // Datenbank Password  

$db = new mysql($db_host,$db_user,$db_pass,$db_database); 

$sql = "SELECT * FROM Tabelle ORDER BY id";  
$result = $db->query($result)or die(mysql_error());  
while ($modell = $db->fetch($sql))  
{
```

Ich würde mir halt auch mal die Fehlermeldungen durchlesen und die Klasse anschauen.
Dann hättest du auch rausgefunden, dass das Konstrukt 4 Parameter (deswegen auch diese 4 Fehlermeldungen) erwartet 

Ich hoffe ich konnte helfen 

MfG
Fabsch


----------

