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

<?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 ?
In de functions kennen wij 'return' om iets terug te sturen. Dat staat los van mysqli.

<?php
function test() {
$link = 'Connectie';
return $link;
}
echo test(); // Connectie
?>

[size=xsmall]Toevoeging op 17/04/2014 10:26:27:[/size]

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:
<?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.
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

<?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);
}
}
?>

ik zou het dan zo doen: (als ik het met functies zou doen)

<?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 ....");
}
?>
@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...?
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.
Met mysql deed ik het volgde

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

<?php

function get_data($sql)
{
$query = mysql_query($sql);
}

?>

Hoe kan ik dit ook krijgen met mysqli ?
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.

Reageren