Registrierte User sehen keine Werbung und haben Zugriff auf alle Funktionen des Forums

22.05.2012, 00:33 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren
Zuletzt online

Keine Benutzer in Liste

Statistik

135 Mitglieder - 1 130 Themen - 7 079 Beiträge (durchschnittlich 5,02 Beiträge/Tag)
Unser neuestes Mitglied heißt: gaoshu01.

Andreas

ist hier zu Hause

Registrierungsdatum: 08.07.2008

Beiträge: 2 226

Danksagungen: 1635 / 30

Aktivitätspunkte: 13990

Level: 43 [?]

Erfahrungspunkte: 3.146.141

Nächstes Level: 3.609.430

Bewertungen - Ø 5

1

24.05.2009, 21:29

[PHP] MySQL-Datenbankverbindung aufbauen

So ne kleine Einstiegssache, die immer ganz wichtig ist^^

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
<?
$mysql mysql_connect$host$user$pass );
mysql_select_db($dbase$mysql);

if ( !$mysql ) 
{
// Email an Administrator senden
mail($kontaktemail$betreff$text$header);
// Temporary Not Available Seite laden
header("Location: /down.php");
exit;
}
?>
Machmal ist schweigen die schlechtere Alternative - Drum zeig Mut, lern reden und argumentieren!
--------------------------------------
Student für Lehramt Physik/Informatik
--------------------------------------
Kennt ihr noch leute, die uns noch nicht kennen? Na dann einfach einladen!
--------------------------------------
Meine Amazonstores zur unterstützung von Tratschplatz:
Alltagsartickel und Eletroartickel - Fachbücher und Bücher

Es hat sich bereits 1 Gast bedankt.

surcouf

Tratschplatz unter den Favoriten gespeichert

Registrierungsdatum: 06.01.2009

Beiträge: 367

Danksagungen: 25 / 4

Geburtstag: 18.12.1983 (28)

Geschlecht: Männlich

Wohnort: Constance

Aktivitätspunkte: 1960

Level: 32 [?]

Erfahrungspunkte: 451.925

Nächstes Level: 453.790

Bewertungen - Ø 5

2

24.05.2009, 22:27

Für Fortgeschrittene ;)


Für umfangreiche Projekte ist es immer praktisch, die SQL-Verbindung über eine Klasse laufen zu lassen.

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
    
    class sql {
        
        function init() {
            
            if ($this->load != 1) {
                mysql_connect('localhost''db_username''db_passwort');
                mysql_select_db('db_datenbank');
                mysql_query("SET NAMES 'utf8'");
                mysql_query("SET CHARACTER SET 'utf8'");
                $this->load 1;
            }
            
        }
        
        function encode($string) {
            
            $string mysql_real_escape_string($string);
            $string str_replace('%''&#x25;'$string);
            $string str_replace('%''&#x5F;'$string);
            return $string;
            
        }
        
        function id() {
            return mysql_insert_id();
        }
        
        function rows($res) {
            return mysql_num_rows($res);
        }
        
        function query($string$once 0) {
            
            if ($this->load != 1$this->init();
            $res mysql_query($string);
            if ($once == 1$res $this->fetch($res);
            return $res;
            
        }
        
        function fetch($res) {
            
            $row = @mysql_fetch_array($res);
            $err mysql_error();
            if ($err) echo $err.'<br />';
            return $row;
            
        }
        
    }
    
    $sql = new sql;
    $sql->init();
    
?>


Zur Erklärung:

Die Klasse am besten in eine eigene Datei legen und per require_once zu Beginn der eigentlich aufgerufenen Datei einbinden.

Die Klasse wird automatisch initialisiert und ist über die Variable $sql verfügbar.

$string = $sql->encode('zeichenkette');
= Wandelt eine Zeichenkette um, um Injektionsattacken vorzubeugen. Über derartige Attacken ist es möglich, in eine reine Abfrage bestimmte SQL-Anweisungen einzubauen, um Schaden anzurichten. Durch die Umwandlung werden alle dafür verfügbaren Zeichen automatisch umgewandelt. Dies sollte immer auf Zeichenketten angewandt werden, bevor damit eine SELECT-Abfrage gestartet wird.

$num = $sql->id();
= liefert den Index der letzten in die Datenbank per "INSERT INTO..." geschriebene Zeile.

$result = $sql->query('SELECT * FROM `user`' [, 1]);
= liefert den handler für die Datenbankabfrage. Ist das optionale , 1 gesetzt, so ist $result automatisch ein array mit der ersten abgefragten Zeile.

$num = $sql->rows($result);
= liefert die Anzahl der von der Datenbank zurückgegebenen Zeilen der vorher per $sql->query durchgeführten Abfrage

$res = $sql->fetch($result);
= springt in die nächste Zeile der zurückgegebenen Daten. Sinnvoll ist es, das ganze in einer while-Schleife zu verwenden. Das Ergebnis $res ist ein assoziatives Array mit einem kompletten Datensatz.

Andreas

ist hier zu Hause

Registrierungsdatum: 08.07.2008

Beiträge: 2 226

Danksagungen: 1635 / 30

Aktivitätspunkte: 13990

Level: 43 [?]

Erfahrungspunkte: 3.146.141

Nächstes Level: 3.609.430

Bewertungen - Ø 5

3

27.05.2009, 20:35

mhm,
kannst du mir nochmal erklären, wie genau du damit arbeitest?

also wie mache ich es, das meine mysql-abfrage ausgeführt wird?
normalerweiße mache ich das ja mit
mysql_querie ()
aber mit dem was du da jetzt gemacht hast?
Wie kann ich die classe nun richtig anwenden?

Also ich fände beispiele für mysql-queries echt gut.
Eine Abrage und ein Select und ein Insert/Update

greez
Machmal ist schweigen die schlechtere Alternative - Drum zeig Mut, lern reden und argumentieren!
--------------------------------------
Student für Lehramt Physik/Informatik
--------------------------------------
Kennt ihr noch leute, die uns noch nicht kennen? Na dann einfach einladen!
--------------------------------------
Meine Amazonstores zur unterstützung von Tratschplatz:
Alltagsartickel und Eletroartickel - Fachbücher und Bücher

surcouf

Tratschplatz unter den Favoriten gespeichert

Registrierungsdatum: 06.01.2009

Beiträge: 367

Danksagungen: 25 / 4

Geburtstag: 18.12.1983 (28)

Geschlecht: Männlich

Wohnort: Constance

Aktivitätspunkte: 1960

Level: 32 [?]

Erfahrungspunkte: 451.925

Nächstes Level: 453.790

Bewertungen - Ø 5

4

27.05.2009, 20:45

k ;)

Tabelle `users`
Spalten: `userid`, `username`, `userpwd`

Select-Abfrage um genau einen Datensatz aus der Abfrage zu wählen:
$result = $sql->query('SELECT * FROM `users` WHERE `userid`=1', 1);
Die vom Server zurückgegebenen Daten stehen dann in $result. (Also $result['userid'], $result['username'] und $result['userpwd'])


Select-Abfrage für mehrere Datensätze:
$result = $sql->query('SELECT * FROM `users`');
while ($row = $sql->fetch($result)) {

# Diese Schleife wird so oft ausgeführt, wie Zeilen vom Datenbankserver zurück gegeben wurden.
#Die vom Server zurückgegebenen Daten stehen dann in $row. (Also $row['userid'], $row['username'] und $row['userpwd'])

}



Um einer Tabelle einen neuen Datensatz anzufügen (SQL-Standard):
$sql->query('INSERT INTO `users`(`userid`, `username`, `userpwd`) VALUES(\'1\', \'Andreas\', \'pubs\')');

Um anschließend die ID des Datensatzes zu erhalten:
$id = $sql->id();

Andreas

ist hier zu Hause

Registrierungsdatum: 08.07.2008

Beiträge: 2 226

Danksagungen: 1635 / 30

Aktivitätspunkte: 13990

Level: 43 [?]

Erfahrungspunkte: 3.146.141

Nächstes Level: 3.609.430

Bewertungen - Ø 5

5

27.05.2009, 20:51

super, thx

ich melde mich dann bei weiteren fragen:P
Machmal ist schweigen die schlechtere Alternative - Drum zeig Mut, lern reden und argumentieren!
--------------------------------------
Student für Lehramt Physik/Informatik
--------------------------------------
Kennt ihr noch leute, die uns noch nicht kennen? Na dann einfach einladen!
--------------------------------------
Meine Amazonstores zur unterstützung von Tratschplatz:
Alltagsartickel und Eletroartickel - Fachbücher und Bücher

Andreas

ist hier zu Hause

Registrierungsdatum: 08.07.2008

Beiträge: 2 226

Danksagungen: 1635 / 30

Aktivitätspunkte: 13990

Level: 43 [?]

Erfahrungspunkte: 3.146.141

Nächstes Level: 3.609.430

Bewertungen - Ø 5

6

08.06.2009, 11:45

ist das so ok?

PHP-Quelltext

1
2
3
4
5
6
$result $sql->query('SELECT * FROM `benutzerdaten` WHERE `Nickname` = $nickname ' [, 1]);
$num $sql->rows($result);
if ($num 0)
   {
   $string $sql->encode('INSERT INTO `benutzerdaten` (`Nickname`, `Kennwort`, `Nachname`, `Vorname`) VALUES ($nickname , $passwort , $name , $vorname);');
   }
Machmal ist schweigen die schlechtere Alternative - Drum zeig Mut, lern reden und argumentieren!
--------------------------------------
Student für Lehramt Physik/Informatik
--------------------------------------
Kennt ihr noch leute, die uns noch nicht kennen? Na dann einfach einladen!
--------------------------------------
Meine Amazonstores zur unterstützung von Tratschplatz:
Alltagsartickel und Eletroartickel - Fachbücher und Bücher

surcouf @work

unregistriert

7

08.06.2009, 20:04

Funktionieren würde es ;)

aber es ist für das insert sinnvoller:
$sql->query('INSERT INTO `benutzerdaten` (`Nickname`, `Kennwort`, `Nachname`, `Vorname`) VALUES (\''.$sql->encode($nickname).'\', \''.$sql->encode($passwort ).'\', \''.$sql->encode($name ).'\', \''.$sql->encode($vorname).'\');');

Andreas

ist hier zu Hause

Registrierungsdatum: 08.07.2008

Beiträge: 2 226

Danksagungen: 1635 / 30

Aktivitätspunkte: 13990

Level: 43 [?]

Erfahrungspunkte: 3.146.141

Nächstes Level: 3.609.430

Bewertungen - Ø 5

8

03.07.2009, 00:07

Also nach langer Diskussion haben wir festgestellt, dass man das ganze auf einigen Servern andes aufbauen muss:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    class sql {

        function init() {
        
//            if ($this->load != 1) {
                mysql_connect('host''username''passwort');
                mysql_select_db(datenbank');
                mysql_query("SET NAMES 'utf8'");
                mysql_query("SET CHARACTER SET 'utf8'");
//                $this->load = 1;
//            }

        }

        function encode($string) {

            $string = mysql_real_escape_string($string);
            $string = str_replace('%', '&#x25;', $string);
            $string str_replace('%''&#x5F;'$string);
            return $string;

        }

        function id() {
            return mysql_insert_id();
        }

        function rows($res) {
            return mysql_num_rows($res);
        }

        function query($string$once 0) {

//            if ($this->load != 1) $this->init();
            $res mysql_query($string);
            if ($once == 1$res $this->fetch($res);
            return $res;

        }

        function fetch($res) {

            $row = @mysql_fetch_array($res);
            $err mysql_error();
            if ($err) echo $err.'<br />';
            return $row;

        }

    }

    $sql = new sql;
    $sql->init();

fragger

Nonsensposter

Registrierungsdatum: 04.05.2009

Beiträge: 11

Geburtstag: 29.07.1991 (20)

Geschlecht: Männlich

Wohnort: Kaub

Beruf: Arbeitslos / Feuerwehrmann- Anwärter

Aktivitätspunkte: 60

Level: 17 [?]

Erfahrungspunkte: 12.254

Nächstes Level: 13.278

Bewertungen - Ø 0

9

03.07.2009, 02:22

Ohh man, dann bleib ich doch lieber bei der alten Connect Methode :D

Ich habs nicht so mit Klassen, sind zwar schön und Gut, aber wirklich verstehe tue ich die ja nicht wirklich :D

Andreas

ist hier zu Hause

Registrierungsdatum: 08.07.2008

Beiträge: 2 226

Danksagungen: 1635 / 30

Aktivitätspunkte: 13990

Level: 43 [?]

Erfahrungspunkte: 3.146.141

Nächstes Level: 3.609.430

Bewertungen - Ø 5

10

03.07.2009, 02:49

naja
mein problem ist an der klasse, dass die einfach nicht so funkzt wie sie soll....

Ähnliche Themen

Thema bewerten

Partnerseiten

 

Witzeland.de   ---   Archiv   ---  Kque7 ---  Ratschplatz --- Preisvergleich   ---   Forenblog