PHP
PHP KOULUTUSTA VUONNA 2025!
-
PHP koulutus
-
WordPress PHP-devaajalle koulutus
-
MySQL koulutus
-
Apache HTTPd koulutus
-
Microsoft IIS koulutus
Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.
PHP ja MySQL: mysqli-laajennuksen käyttö
mysqli (MySQL Improved) on PHP:n tarjoama laajennus, joka mahdollistaa turvallisen ja tehokkaan kommunikoinnin MySQL-tietokantojen kanssa. Se on seuraaja vanhalle mysql_*-laajennukselle, joka poistettiin käytöstä PHP 7.0 -versiossa. mysqli tuo mukanaan joukon parannuksia suorituskykyyn, tietoturvaan ja ohjelmointityyleihin.
Tietokantayhteyden avaaminen ja sulkeminen
<?php
$mysqli = new mysqli("localhost", "kayttaja", "salasana", "testikanta");
if ($mysqli->connect_error) {
die("Yhteys epäonnistui: " . $mysqli->connect_error);
}
$mysqli->close();
?>
Vinkki: Avaa yhteys mahdollisimman myöhään ja sulje se mahdollisimman aikaisin. Älä koskaan luota PHP:n automaattiseen sulkemiseen tuotantokoodissa.
Yhden arvon hakeminen
<?php
$tulos = $mysqli->query("SELECT COUNT(*) AS maara FROM testitaulu");
$rivi = $tulos->fetch_assoc();
echo "Rivejä yhteensä: " . $rivi['maara'];
$tulos->free();
?>
Vinkki: Jos haet vain yhtä arvoa, tee se eksplisiittisesti turhaa silmukointia välttäen.
Datan hakeminen ja silmukointi
<?php
$tulos = $mysqli->query("SELECT t_id, t_nimi, t_hinta FROM testitaulu");
if ($tulos->num_rows > 0) {
while ($rivi = $tulos->fetch_assoc()) {
echo $rivi['t_id'] . " - " . $rivi['t_nimi'] . " - " . $rivi['t_hinta'] . "
";
}
} else {
echo "Ei tuloksia.";
}
$tulos->free();
?>
Vinkki: Tarkista aina, että tulosjoukko ei ole tyhjä ennen silmukointia – muuten käyttäjä näkee helposti tyhjän näkymän ilman syytä.
CUD-operaatiot (Create, Update, Delete)
<?php
// INSERT
$mysqli->query("INSERT INTO testitaulu (t_nimi, t_hinta) VALUES ('Tuote A', 19.90)");
// UPDATE
$mysqli->query("UPDATE testitaulu SET t_hinta = 29.90 WHERE t_id = 1");
// DELETE
$mysqli->query("DELETE FROM testitaulu WHERE t_id = 2");
?>
Vinkki: Varmista, että tiedät varmasti mitä olet muuttamassa — käytä aina WHERE-ehdot, ja testaa INSERT/UPDATE/DELETE ensin komentoriviltä ennen kuin laitat sen tuotantoon.
Prepared statement
<?php
$stmt = $mysqli->prepare("INSERT INTO testitaulu (t_nimi, t_hinta) VALUES (?, ?)");
$stmt->bind_param("sd", $nimi, $hinta); // s = string, d = double
$nimi = "Tuote B";
$hinta = 24.90;
$stmt->execute();
$stmt->close();
?>
Vinkki: käytä prepared statementteja aina kun vastaanotat ulkopuolelta tulevia syötteitä (evästeet,lomakkeet,kyselymerkkijonot ym).
Virheenkäsittely ja debuggaus
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
$mysqli = new mysqli("localhost", "kayttaja", "salasana", "testikanta");
// ...
} catch (mysqli_sql_exception $e) {
error_log("Yhteysvirhe: " . $e->getMessage());
echo "Tietokantavirhe. Yritä myöhemmin uudelleen.";
}
Vinkki: Lokita aina virheet, mutta näytä käyttäjälle vain geneerinen viesti – tämä on yksinkertaisin tapa estää tietovuodot hyökkääjälle.