class en function mysqli connect

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kenny iets

kenny iets

22/10/2014 19:03:26
Quote Anchor link
hallo
ik ben net bezig met een nieuwe website html een deel
af dus nu wil een goed php connect op zetten zodat het echt werk kan begingen
maar dit wil een goed aanpakken met classen enzo maar ik kom niet uit ver uit de tutorials van google dus,
ben ik zelf bezig geweest
en heb dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
class mysqlidata{
    private $host = "localhost";
    private $username = "root";
    private $password = "";
    private $db = "phptest"
    private $link = NULL;

    function
connect(){
        $this->link = new mysqli($host, $username, $password, $password)
        or die ("can not connect to mysqli server");
    }
}

?>


maar wat moet er nog bij tot een goeie connect
of anders

MVG kenny
 
PHP hulp

PHP hulp

28/03/2024 11:36:36
 
- Ariën  -
Beheerder

- Ariën -

22/10/2014 19:21:50
Quote Anchor link
Waarom aan class bouwen voor MySQLi als deze al een eigen class heeft?

Wat dingen wat mij opvalt:
- De connectie kan prima in je constructor, met de mogelijkheid om de logingegevens aan te passen via de instance: $db = new mysqlidata("localhost","jantje","H4X0R","mijn_website")
- geen output in je class, en al helemaal geen die(). Gebruik dan liever exceptions.
 
Kenny iets

kenny iets

22/10/2014 19:27:21
Quote Anchor link
- Aar - op 22/10/2014 19:21:50:
Waarom aan class bouwen voor MySQLi als deze al een eigen class heeft?

Wat dingen wat mij opvalt:
- De connectie kan prima in je constructor, met de mogelijkheid om de logingegevens aan te passen via de instance: $db = new mysqlidata("localhost","jantje","H4X0R","mijn_website")
- geen output in je class, en al helemaal geen die(). Gebruik dan liever exceptions.

omdat ik deze class ook gebruik om uit db tehalen
ik ben een noob omdit het heb die zelf gebouwt zonder dat ik weet hoe ik een mysqli connect maak met class en function
 
- Ariën  -
Beheerder

- Ariën -

22/10/2014 19:29:02
Quote Anchor link
Leuk om mee te experimenteren, maar in feite ben je het wiel nu opnieuw aan het uitvinden.
 
Kenny iets

kenny iets

22/10/2014 19:30:49
Quote Anchor link
dat klopt maarja ik wil ook ervaring op doen zodat ik meer met class wil gaan werken

Toevoeging op 22/10/2014 19:43:31:

maar wat moet er eigenlijk nog bij
zodat die echt werkt?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/10/2014 01:59:35
Quote Anchor link
Kenny iets op 22/10/2014 19:30:49:
maar wat moet er eigenlijk nog bij
zodat die echt werkt?


Je zult een instantie van de class moeten maken. Nu heb je hem alleen gedeclareerd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$db
= new mysqlidata();
?>


en nu kun je deze instantie gaan gebruiken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$db
->connect();
?>




Toevoeging op 23/10/2014 02:47:50:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php

// config.php

define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','');
define('DB_DBASE','phptest');

// database.class.php

class mysqlidata
{
    private $link;
    private $result;
    
    function
__construct($host = DB_HOST, $user = DB_USER, $pass = DB_PASS, $dbase = DB_DBASE)
    {

        $this->result = false;
        $this->link = new mysqli($host, $username, $password, $password)
        or die ("can not connect to mysqli server");
    }

    
    public function getAll($tablename)
    {

        $array = array();
        
        //als er nog een oude resultset in het geheugen is dan ruimen we die netjes op
        if($this->result)
            $this->result->close();
        
        $this->result = $this->link->query('SELECT * FROM '.$tablename);
        
        //indien de query niet gelukt is geven we een foutmelding
        if(!$this->result)
        {

            echo $this->link->error;
            return $array;
        }

        
        //prop alle rijen in een array
        while($row = $this->result->fetch_assoc())
            $array[] = $row;
            
        return $array;
    }


    public function numRows()
    {

        // even checken of we wel een resultset hebben
        if(!$this->result)
            return false;
            
        return $this->result->num_rows;
    }
}



// index.php


// eerste instantie van de class maakt verbinding met de default database

$db = new mysqlidata();

print_r($db->getAll('my_table'));
printf("Select returned %d rows.\n", $db->numRows());

// tweede instantie van de class die verbinding maakt met een andere database server
$db2 = new mysqlidata('mysql.server.com', 'superuser', 'mypassword', 'test');

print_r($db2->getAll('my_table'));
printf("Select returned %d rows.\n", $db2->numRows());

?>
Gewijzigd op 23/10/2014 02:50:03 door Frank Nietbelangrijk
 
Kenny iets

kenny iets

23/10/2014 10:26:38
Quote Anchor link
waar komt die Tablenaam vandaan?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/10/2014 13:07:20
Quote Anchor link
Regel 65. daar moet je dus even een tablenaam invullen die in je database staat.

Waar het meer om gaat:

Zie je de voordelen in mijn stukje code? Bijvoorbeeld dat je gewoon meerdere databases of servers kunt connecten?
Dat je heel eenvoudig nog even het aantal rijen kunt opvragen na een select query?
 
Kenny iets

kenny iets

25/10/2014 23:24:43
Quote Anchor link
ja best handig ik wil nu ook verder oop aangezien dat overzichterlijker is met html :)


Toevoeging op 26/10/2014 15:51:46:

lol dit krijg ik op me iis
Fatal error: Class 'mysqli' not found in C:\Users\Kenny\Desktop\website\website\globaal.php on line 20
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.