php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.06.2008, 18:25  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard MySQL-Klasse und noch viele Fragen...

Hallo,

ich bin gerade dabei mich in MySQL-Klassen einzulesen und bin jetzt soweit mittlerweile gekommen:

1. Meine class.mySQL.php:
PHP-Code:
<?
class db{

var 
$_dbHost        "localhost";
var 
$_dbDatabase    "database";
var 
$_dbUsername    "username";
var 
$_dbPassword    "passwort";
var 
$_dbcon    NULL;
   
    function 
start()
    {
        
$this->_dbcon mysql_connect$this->_dbHost$this->_dbUsername$this->_dbPassword );
        
mysql_select_db$this->_dbDatabase$this->_dbcon );
    }
    
    function 
close() {

      
mysql_close($this->_dbcon);

    }
}
?>
Dann noch die index.php dazu:
PHP-Code:
<?
include("class.mySQL.php"); 

$db = new db();
$db->start;

$db->close;
?>
Also derzeit stellt er im Prinzip die Verbindung zur Datenbank her und beendet sie nachher wieder...passt das alles so?

Und dann kommen allerdings meine Fragen:

Denn ich versteh leider nicht ganz wie ich jetzt die Abfrage in Class mit einbaue und dann vor allem sie auch richtig aufrufe. Denn ich brauche folgendes:

1. Abfrage eines Wertes: Ich möchte einfach einen Wert aus der DB mit "Select * from table where id=5" zum Beispiel auslesen und dann über $wert[id] $wert[name], also immer $wert[feldname] das ganze anzeigen.

2. Abfrage von mehren Werten mit while: Hier möchte ich auch wieder ganz normal mit "Select * from table where pid = 5" zum Beispiel abfragen und dann über while(){
echo "$wert[id]
";
} etc. eben ausgeben können.

3. Insert: Natürlich die Standartfunktion für Inserts mit "insert into leadok set name='$name',blum='$blub'....
Und direkt nach dem Insert möchte ich dann die Möglichkeit haben die id des Eintrages (also das erste Feld ist immer "id" und die müsste ich irgendwie abfragen) zu bekommen.

4. Update: die ganz normale Update-Funktion

Aber wie bekomme ich diese 4 Funktionen in diese class mit rein und wie muss ich die dann in meiner index.php aufrufen und eben mit auflisten? Wäre super nett, wenn mir jemand helfen könnte.

Danke
BartTheDevil89 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.06.2008, 19:07  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo BartTheDevil89,

bitte benutze die Forensuche, ich habe vor einiger Zeit dazu mal eine interessante Diskussion hier im Forum geführt.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 10.06.2008, 19:56  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard

Zitat:
Zitat von dr.e.
Hallo BartTheDevil89,

bitte benutze die Forensuche, ich habe vor einiger Zeit dazu mal eine interessante Diskussion hier im Forum geführt.
Hi,

ja hab ich eigentlich schon und hab jetzt auch nochmal den hier gefunden: http://www.phpfriend.de/forum/ftopic61593.html Außerdem hab ich auch schon google zum thema "klasse mysql", "class mysql", etc. durch, aber diese 4 Dinger versteh ich leider trotzdem nicht.
BartTheDevil89 ist offline  
Alt 10.06.2008, 21:24  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Naja dein Beispiel oben hat noch einen Fehler. Die Funktionen rufst du so auf:

$db->start();

Man beachte die Klammern!

Und so kannst du es mit jeder Funktion machen die du in der Klasse definierst. Du kannst auf Variablen übergeben, ganz normal wie eine Funktion in PHP.

Und in den Funktionen kannst du dir dann deine 4 Sachen programmieren.
Flor1an ist offline  
Alt 10.06.2008, 21:36  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard

Zitat:
Zitat von RaZoR
Naja dein Beispiel oben hat noch einen Fehler. Die Funktionen rufst du so auf:

$db->start();

Man beachte die Klammern!

Und so kannst du es mit jeder Funktion machen die du in der Klasse definierst. Du kannst auf Variablen übergeben, ganz normal wie eine Funktion in PHP.

Und in den Funktionen kannst du dir dann deine 4 Sachen programmieren.
Achso...ja kennst du vielleicht die eine oder andere Hilfe, wie die dann reinkommen, bzw. kann mir vielleicht mal jemand ein Beispiel geben?
BartTheDevil89 ist offline  
Alt 10.06.2008, 21:39  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo BartTheDevil89,

hier ein Beispiel für eine Umsetzung: http://adventure-php-framework.org/f...dler_8php.html
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 10.06.2008, 21:50  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

@dr.e.: Meinst du nicht dass das noch ein paar Level zu hoch ist?

@BartTheDevil89: Die Funktionen kannst du genau wie start() und close() in deine Klasse schreibe!

Ein Beispiel mach ich dir, zum Beispiel die insert() Funktion!

PHP-Code:
<?php
// hier die class

public function insert($table$values) {
    
$tmp = array();
    foreach (
$values as $key => $value) {
        
$tmp[] = $key." = '".$value."'";
    }

    
$query "INSERT INTO '$table' SET ".implode(','$tmp);
    
    
// Query an die Datenbank schicken
    
mysql_query($query$this->_dbcon);

    
// id des Eintrages zurück geben
    
return mysql_insert_id($this->_dbcon);

}

// und hier hört die class auf


// so könnte die Funktion verwendet werden!
$user = array(
    
'name' => 'Flo',
    
'alter' => 21,
    
'email' => 'a@b.de'
);

$user_id $db->insert('user'$user);
Flor1an ist offline  
Alt 10.06.2008, 22:58  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

@razor

aber bitte noch mysql_real_escape_strings für die $value's
robo47 ist offline  
Alt 10.06.2008, 23:00  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ich habe mir noch gedacht ob ich das in die Funktion einbauen soll

Dann dachte ich mir lass es schön einfach und übersichtlich, das escapen kann man noch im Skript machen xD

Aber wahrscheinlich ist es besser da noch in der Schleife die Werte zu escapen.
Flor1an ist offline  
Alt 10.06.2008, 23:31  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard

Hi,
also auf jedenfall schonmal danke RaZor! Hab die mysql_real_escape_strings jetzt mit eingebaut, weil das natürlich wirklich super ist. Denn im Prinzip muss ich mich doch nurnoch um die klassichen Sache dann im Script also strip_tags, etc. kümmern und kann von sql_injections damit ganz die Finger lassen, oder? Also hab jetzt eben die mysql_real_escape_strings eingebaut und gleichzeitig die update-Funktion eingebaut. Dort hab ich gleichzeitig auch die Funktion für Where eingebaut.
Kann vielleicht mal einer schauen, ob das so passt?
PHP-Code:
<?
class db{

var 
$_dbHost        "localhost";
var 
$_dbDatabase    "";
var 
$_dbUsername    "";
var 
$_dbPassword    "";
var 
$_dbcon    NULL;
   
    function 
start()
    {
        
$this->_dbcon mysql_connect$this->_dbHost$this->_dbUsername$this->_dbPassword );
        
mysql_select_db$this->_dbDatabase$this->_dbcon );
    }
    
    function 
close() {

      
mysql_close($this->_dbcon);

    }
    
    function 
insert($table$values){ 
    
$tmp = array(); 
    foreach (
$values as $key => $value) { 
        
$value mysql_real_escape_string($value);
        
$tmp[] = $key." = '".$value."'"
    } 

    
$query "INSERT INTO $table SET ".implode(','$tmp); 
     
    
mysql_query($query$this->_dbcon); 

    return 
mysql_insert_id($this->_dbcon); 

    }
    
    function 
update($table$values$where){ 
    
$tmp = array(); 
    foreach (
$values as $key => $value) {
        
$value mysql_real_escape_string($value);
        
$tmp[] = $key." = '".$value."'"
    }
    
$wheredata = array(); 
    
$wherestart "";
    if(
$where != ""){
    foreach (
$where as $key => $value) {
        
$value mysql_real_escape_string($value);
        
$wheredata[] = $key." = '".$value."'"
    }
    
$wherestart "WHERE";
    }

    
$query "UPDATE $table SET ".implode(','$tmp)." $wherestart ".implode('and'$wheredata); 
     
    
mysql_query($query$this->_dbcon); 

    }
    
}
?>
Und dann dazu hab ich mir in der index mal alles aufgelistet:

PHP-Code:
<?
include("class.mySQL.php"); 

$db = new db();
$db->start();

//Insert
$user = array( 
    
'name' => 'Flo'
    
'alter' => 21
    
'email' => 'a@b.de' 
); 

$user_id $db->insert('user'$user); //user_id gibt gleich die ID zurück

//Update
$user = array( 
    
'name' => 'Flo'
    
'alter' => 21
    
'email' => 'a@b.de' 
);

$where = array( 
    
'id' => 2,
    
'id2' => 'a',
);  

$db->update('user'$user$where);

$db->close();
?>
EDIT: Hab aus public function jetzt function gemacht, da sonst der Server ne Fehlermeldung gebracht hat.

EDIT2: Habe ein Problem mit dem Upate, denn es lassen sich ja nur Daten mit "and" bilden...aber Varianten aus and und or, etc. sind halt das Problem. Also gibts da irgendwie noch ne andere Variante für?
BartTheDevil89 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
eigene Klasse für mySql PW und UN Reen_Sc Datenbanken 4 09.07.2008 16:15
Anfänger und Mysql... Paar Fragen! Finaldragon PHP Tipps 2008 40 03.05.2008 10:28
[Erledigt] MySQL - ERROR 1044 bei erstellen einer Datenbank _youngenterpriser_ Datenbanken 2 05.02.2008 17:56
PHP + MySQL zwei Instanzen vertragen sich nicht Leisurelarry PHP Tipps 2008 11 04.10.2007 16:45
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
OOP => MySQL Klasse Kein Genie PHP Tipps 2007 16 16.03.2007 14:57
2 fragen zu mysql schorsch Datenbanken 5 26.03.2006 15:59
[Erledigt] Mysql 4.1.x unter php 4.3.9 Datenbanken 3 15.11.2005 13:49
Schnittstelle zwischen PHP und MySQL klappt net !!! Datenbanken 16 16.10.2005 14:24
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
MYSQL Verwaltung Stümper Datenbanken 1 25.11.2004 10:10
Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
MySQL fragen Skazi PHP Tipps 2004 16 20.10.2004 21:29
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46
[Erledigt] PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a m p; MySQL Datenbanken 5 01.08.2004 05:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-tipps-2008/46008-mysql-klasse-und-noch-viele-fragen.html, mysql_real_escape_strings, class.mysql.php insert, php mysql insert klasse, datenbankabfrage mysql real escape string, class php mysql insert, php mysql klasse insert, php klasse mysql insert id, php mysql klasse mysql_real_escape_string, php insert klasse mysql, php insert klasse, php class mysql insert, mysql class gleichzeitig insert select, mysql insert id zurückgeben, einfache mysql klasse insert update select, mysql_real_escape_string mysql klasse php, klasse in klasse aufrufen php

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.