mysql naar mysqli

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter de Beer

Peter de Beer

17/04/2014 10:18:51
Quote Anchor link
Hallo

Ik werdt er pas op gewezen dat het niet zo slim was dat ik nog gebruikt maakte van mysql en over moest gaan op mysqli. Nu na wat google werk lijkt het redelijk hetzelfde allen wertk het niet

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
<?php

function connect()
{

    $link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if(!$link)
    {

        trigger_error('Fout bij verbinden met database: '.mysqli_connect_error());
    }
}


function
get_data($sql)
{

    if ($query = mysqli_query($link, $sql)) {

        if (mysqli_num_rows($query) == 0) {
            return error(2);
        }


        while ($row = mysqli_fetch_array($query, MYSQL_ASSOC)) {
            $data[] = $row;
        }


     return $data;

    }
else {
        return error(1);
    }
}

?>


Hoe kan ik die $link nu mee sturen naar andere functies ?
 
PHP hulp

PHP hulp

26/04/2024 01:10:57
 
Michael -

Michael -

17/04/2014 10:22:48
Quote Anchor link
In de functions kennen wij 'return' om iets terug te sturen. Dat staat los van mysqli.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function test() {
    $link = 'Connectie';
    return $link;
}

echo test(); // Connectie
?>


Toevoeging op 17/04/2014 10:26:27:

Sowieso snap ik niet goed waarom je in procedural een connectie in een functie wil stoppen.
Stop de connectie in een php bestand en include deze waar je 'm nodig hebt.
In de praktijk zou jou functie zo worden gebruikt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function connect(){
    $link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    return $link;
}

connect();
?>

Wat in mijn ogen 3 regels te veel is, want connect() gebruik je toch verder nooit meer.
 
Peter de Beer

Peter de Beer

17/04/2014 10:39:20
Quote Anchor link
Ik zet het in een functie zo dat ik niet boven elke pagina een connectie hoeft te maken met de database

Dat retrun was idd een foutje van mij had ik even over het hooft gezien maar

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
<?php
function connect()
{

    $link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if(!$link)
    {

        trigger_error('Fout bij verbinden met database: '.mysqli_connect_error());
    }
else{
        return $link;
    }
    
}


connect()

function
get_data($sql)
{

    if ($query = mysqli_query($link, $sql)) {

        if (mysqli_num_rows($query) == 0) {
            return error(2);
        }


        while ($row = mysqli_fetch_array($query, MYSQL_ASSOC)) {
            $data[] = $row;
        }
    }
else {
        return error(1);
    }
}

?>
 
Ivo P

Ivo P

17/04/2014 10:43:57
Quote Anchor link
ik zou het dan zo doen: (als ik het met functies zou doen)

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
<?php
function connect()
{

   static $link;
   if(!$link) {
     $link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
   }

   return $link;
}


function
get_data($foo)
{

   $link = connect();
   mysqli_query($link, "SELECT ....");
}

?>
 
Michael -

Michael -

17/04/2014 10:49:59
Quote Anchor link
@Ivo; Nou maak je bij elke select een nieuwe connectie. Nou zou PHP wel steeds de zelfde gebruiken, maar dat is toch niet logisch? Wel een beter gebruik van de functie. Dan krijgt het nog enigszins nut.

>>> k zet het in een functie zo dat ik niet boven elke pagina een connectie hoeft te maken met de database.

Want je hoeft nou niet de functie te include en geen connectie meer te maken...?
 
Ivo P

Ivo P

17/04/2014 10:58:15
Quote Anchor link
nee, dat is niet de bedoeling

De bedoeling is dat hij $link onthoudt (regel 4)
en alleen als $link nog leeg is, probeert hij opnieuw te connecten.

Is $link gevuld, dan komt die var gewoon retour.
 
Peter de Beer

Peter de Beer

17/04/2014 11:01:40
Quote Anchor link
Met mysql deed ik het volgde

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
<?php
function connect()
{


    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    $db = mysql_select_db(DB_NAME, $link);

    if (!$link AND !$db) {
        exit('Could not connect: ' . mysql_error());
    }
else {
        return true;
    }
}


connect()
?>


Daarna kan ik ik elke functie die ik aan maak

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

function get_data($sql)
{

    $query = mysql_query($sql);
}


?>


Hoe kan ik dit ook krijgen met mysqli ?
 
Ivo P

Ivo P

17/04/2014 11:17:45
Quote Anchor link
je zult nu bij gebruik van mysqli_query() een connectie moeten hebben.

Ofwel zet je in al je functies

global $link;

Ofwel

$link = connect();

maar dan wel met mijn versie van connect() want anders connect je 100x per script.
 



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.