<?php
/*
* MySQLi CONNECTIE BESTAND
* In dit bestand maken we de verbinding met een MySQL
* server doormiddel van MySQLi functies. In deze
* functie zit meteen het selecteren van een db, dus
* dat doen we ook meteen.
*/
/* Error-Handling
* ==============
* Als eerst maken we een functie voor het beheren van
* errors. Hiermee kunnen we makkelijk het probleem vinden
* als er iets mis is.
* Zodra een script online is wil je niet dat de gebruiker
* de foutmeldingen krijgt, vandaar dat we hier error_log
* gebruiken als DEBUG_MODE false is.
*/
// DEBUG_MODE, deze wordt false als het script online geplaatst is
define('DEBUG_MODE', true);
/*
* We slaan alle errors op in $errors. Deze lezen we in het
* script uit in via een foreach loop
*/
$errors = Array();
if( DEBUG_MODE )
{ // DEBUG_MODE staat aan
// Zorg dat we alle errors te zien krijgen
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_NOTICE);
}
else
{
// DEBUG_MODE uit dus geen errors tonen
ini_set('display_errors', 'Off');
error_reporting(0);
}
function SQLerror( $error, $message, $file )
{
// $error is het resultaat van mysql_error()
// $message is de tekst die bij de error staat,
// deze tekst zullen we gebruiken als DEBUG_MODE uit staat
// $file is het resultaat van __FILE__ in het bestand van de error
global $errors; // Zorg dat de error variabele die we net hebben gemaakt in deze functie komt
if( DEBUG_MODE )
{ # DEBUG_MODE aan => sla de errors op zodat we ze later kunnen tonen
$errors[] = $message.': '.$error;
}
else
{ # DEBUG_MODE uit => log de errors en sla alleen de $message op
// We slaan niet alleen de error op, maar ook het bestand en de datum
$log = $file.' ['.date('H:i:s').'] '.$error;
error_log($log);
$errors[] = $message;
}
}
/* CONNECTIE MET MySQL SERVER
* ==========================
*/
$sqlLink = mysqli_connect('localhost', 'root', 'usbw', 'sr_system');
// Verander de host, inlog naam, wachtwoord en sql-boilerplate (db) in de juiste gegevens
if( $sqlLink === false )
{
// Als mysqli_connect false returned is er iets mis gegaan, gebruik de net gemaakte error functie
// Omdat het de connectie betreft gebruiken we mysqli_connect_error()
SQLerror( mysqli_connect_error(), 'We kunnen geen verbinding aanmaken', __FILE__ );
}
Daar komen geen foutmeldingen uit. Dus de connectie is goed!
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\USB WebServer\root\Youtube11\index3.php on line 33
Notice: Undefined variable: sqlLink in C:\USB WebServer\root\Youtube11\index3.php on line 39
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\USB WebServer\root\Youtube11\index3.php on line 39
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\USB WebServer\root\Youtube11\index3.php on line 53
Notice: Undefined variable: errors in C:\USB WebServer\root\Youtube11\index3.php on line 82
Maar ik weet niet wat ik hier mee moet. DE tabel pagination heb ik wel nog met enkele quotes voorzien omdat dit in andere documentatie ook staat.
[size=xsmall]Toevoeging op 14/05/2022 21:14:38:[/size]
<?php
// Include het connectie bestand
require 'connect.php';
// Maak een array voor foutmeldingen voor de gebruiker
$userErrors = Array();
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
// Het formulier is verzonden
if( !isset($_POST['naam']) )
{
// Naam is niet ingevuld
$userErrors[] = 'U heeft geen naam ingevuld';
}
if( count($userErrors) == 0 )
{
// Er zit niks in $userErrors en dus is alles goed
// Gebruik altijd mysqli_real_escape_string voor alle
// variabelen die de gebruiker kan aanpassen (alles met $_)
$sQuery = "
SELECT
name,
job,
rank
FROM
users
WHERE
name = '".mysqli_real_escape_string(ucfirst(trim($_POST['naam'])))."'
";
// Gebruik in je query geen backtricks (`)
// en alleen quotes (') als je te maken hebt met een string ($_POST['naam'] in dit geval)
// Voer de query uit
$result = mysqli_query($sqlLink, $sQuery);
// De volgorde van de parameters (sqllink en query) zijn precies omgekeerd aan de mysql_*
// functies. En de link parameter is verplicht
if( $sQuery === false )
{
// De query is niet gelukt
SQLerror(mysqli_error(), 'Uw opdracht kan niet worden uitgevoerd', __FILE__);
}
else
{
// De query is gelukt, maar heeft hij wel een resultaat gekregen?
// Dat kijken we na met mysql_num_rows(), bij een SELECT query geeft deze
// het aantal geselecteerde rijen weer
if( mysqli_num_rows($result) > 0 )
{
// Er zijn meer dan 0 rijen opgehaald en dus is er iets gevonden
// Nu moeten we de resultaten nog fetchen voordat we ze kunnen gebruiken
// het fetchen zet ze in een array die we vervolgens met een while loop uitlezen
while( $row = mysqli_fetch_assoc($result) )
{
// $row is nu elk result. Met $row['kolomNaam'] kun je nu alles op vragen
echo $row['name'].' is een '.$row['job'].' en zijn rank is '.$row['rank'];
}
}
else
{
// Er is niks gevonden, dit is geen systeem fout maar een zoekfout => user error
$userError[] = 'Er kan niks gevonden worden';
}
}
}
}
?>
<!DOCTYPE HTML>
<html lang=nl>
<head>
<meta charset=UTF-8>
<title>SQL Boilerplate - SELECT query met MySQL</title>
</head>
<body>
<?php if( count($errors) > 0 ) :
// Er zijn errors gevonden ?>
<div class="error">
<ul>
<?php foreach( $errors as $err ) : ?>
<li><?php echo $err; ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<?php if( count($userErrors) > 0 ) :
// Er zijn errors gevonden ?>
<div class="error">
<ul>
<?php foreach( $userErrors as $err ) : ?>
<li><?php echo $err; ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<form action method=post>
<label>Naam: <input type=text name=naam /></label><br>
<input type=submit value=Toon />
</form>
</body>