Ombouw van MYSQL naar MYSQLi lukt niet
Naar aanleiding van topics op dit forum omtrent de instructies MYSQL dat die verlaten gaan worden en vervangen gaan worden door MYSQLi, heb ik de stoute schoenen aangetrokken om een start te maken met de migratie van MYSQL naar MYSQLi.
Echter, ik krijg de eerste pagina al niet werkend.
Omdat ik veelvuldig connecties maak met mijn database heb ik gekozen om de connectie telkens middels een include in te lezen.
Mijn connectie ziet er dan als volgt uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
$verbinding = mysqli_connect("SERVERNAAM","GEBRUIKERSNAAM","WACHTWOORD","DATABASAE");
// De variabelen heb ik t.b.v. dit topic aangepast
// Check connection
if (mysqli_connect_errno($verbinding)) {
echo "Geen verbinding met SQL-database. Foutnummer: " . mysqli_connect_error();
} else {
echo "Verbinding gemaakt";
}
mysqli_set_charset($verbinding,"utf8");
// De variabelen heb ik t.b.v. dit topic aangepast
// Check connection
if (mysqli_connect_errno($verbinding)) {
echo "Geen verbinding met SQL-database. Foutnummer: " . mysqli_connect_error();
} else {
echo "Verbinding gemaakt";
}
mysqli_set_charset($verbinding,"utf8");
In mijn index-bestand heb ik dit bestand alsvolgt opgenomen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
session_start();
error_reporting(0);
include "include/connectie_nw.inc.php"; // Bovengetoonde code
$sql = "SELECT * FROM sys__menustructuur WHERE website = 'webplein' ORDER BY volgnummer";
$cResultMenu = mysqli_query($sql);
mysqli_close($verbinding);
while($rowMenu = mysqli_fetch_array($cResultMenu)) {
$cMenu = $rowMenu['menuregel'];
$cSub = $rowMenu['subregel'];
$cTitle = $rowMenu['title'];
$cTarget = $rowMenu['target'];
$cLink = $rowMenu['url'];
.... verdere afhandeling van de ingeleen waardes
}
error_reporting(0);
include "include/connectie_nw.inc.php"; // Bovengetoonde code
$sql = "SELECT * FROM sys__menustructuur WHERE website = 'webplein' ORDER BY volgnummer";
$cResultMenu = mysqli_query($sql);
mysqli_close($verbinding);
while($rowMenu = mysqli_fetch_array($cResultMenu)) {
$cMenu = $rowMenu['menuregel'];
$cSub = $rowMenu['subregel'];
$cTitle = $rowMenu['title'];
$cTarget = $rowMenu['target'];
$cLink = $rowMenu['url'];
.... verdere afhandeling van de ingeleen waardes
}
De ingelezen waardes worden echter niet getoond. Waar maak ik mijn denkfout?
George
Gewijzigd op 27/10/2013 11:27:36 door George van Baasbank
Je sluit de connectie en dan ga je toch proberen data op te halen.
Regel 3: Zet de errors aan.
Gewijzigd op 27/10/2013 11:34:04 door - SanThe -
Haal regel 10 weg. Overigens merk wel op dat een mysqli_close niet verplicht is maar wel aan te raden aan het einde van je script(db gedeelte). De voordelen hiervan zijn gewoon niks meer en minder dan snelheid. hoe sneller je je verbinding weer sluit hoe sneller je script gaat. sowieso wordt aan het einde van je code alle verbindingen verbroken.
Bij MSQLi_query had ik geen verbinding gemaakt. Blijkt dus bij MYSQLi nodig te zijn.
Ik probeer zoveel mogelijk de databse te sluiten na gebruik dus ben ik een voorstander van het handhaven van MYSQLi_close
George van Baasbank op 27/10/2013 11:54:03:
Ik probeer zoveel mogelijk de databse te sluiten na gebruik dus ben ik een voorstander van het handhaven van MYSQLi_close
Let op dat mysqli_close() de TCP-socket niet sluit; die blijft nog enige tijd in een wait-state staan. Doe dus altijd eerst een mysqli_kill() voordat je een mysqli_close() doet.
$cResultMenu = mysqli_query($verbinding, $sql);