mysql naar mysqli
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)
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
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);
}
}
?>
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 ?
Code (php)
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)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
function connect(){
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
return $link;
}
connect();
?>
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.
Dat retrun was idd een foutje van mij had ik even over het hooft gezien maar
Code (php)
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
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);
}
}
?>
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);
}
}
?>
>>> 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...?
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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()
?>
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
Hoe kan ik dit ook krijgen met mysqli ?
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.