point må være en deler med NielsErikP
du kan få nogle forbedrings forslag mere:
flyt din database connection uden for functionen, og overfør den som variabel.
årsagen er hvis du feks har flere functioner, der anvender databasen, ville du skulle ind i hver function og rette, til nyt database navn, hvor imod hvis din connection ligger uden for functionen, skal du kun gøre det et sted
mysqlconnection.php
<?php
// (overvej at tager hostname, db_username, db_password med over som parameter, også)
function MySqlIConnProceduralStyle($db = "") {
$db = ($db == "") ? "test" : $db;
$conn = mysqli_connect("localhost", "root", "", $db);
if (!$conn) {
echo 'Der opstod en fejl.';
exit();
}
mysqli_set_charset($conn, "utf8");
return $conn;
}
function MySqlIConnOOP($db = "") {
$db = ($db == "") ? "test" : $db;
$conn = new mysqli('localhost', 'root', '', $db);
/* check connection */
if (!$conn) {
echo 'Der opstod en fejl.';
exit();
}
$conn->set_charset("utf8");
return $conn;
}
forslag til flere functioner kunne være CRUD, her er mine 5 basis functionerne:
functions_db.php (utested)
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/include/php/db/mysqlconnection.php"); // MySqlIConnProceduralStyle(), MySqlIConnOOP()
function konti_Create($conn, $kontonr, $navn) {
$sql = "INSERT INTO konti (kontonr, navn) VALUES ('$kontonr','$navn')";
// $rs = mysqli_query($conn,$sql ); // procedural style
$rs = $conn->query($sql); // OOP style
// return mysqli_insert_id($conn);
return $conn->insert_id;
}
function konti_Read($conn, $id) {
$sql = "SELECT * FROM konti WHERE id = $id";
$rs = $conn->query($sql);
$ar = $rs->fetch_assoc();
return $ar;
}
function konti_Update($conn, $id, $kontonr, $navn) {
$sql = "UPDATE konti SET kontonr='$kontonr', navn='$navn' WHERE id = $id";
$rs = $conn->query($sql);
}
function konti_Delete($conn, $id) {
$sql = "DELETE FROM konti WHERE id = $id";
$rs = $conn->query($sql);
}
function konti_ReadAll($conn) {
$ar = array();
$sql = "SELECT * FROM konti";
//$rs = mysqli_query($conn, $sql);
$rs = $conn->query($sql);
//while ($row = mysqli_fetch_assoc($rs)) {
while ($row = $rs->fetch_assoc()) {
$ar[] = $row;
}
return $ar;
}
// $con = MySqlIConnProceduralStyle("olsensweb.dk"); // databasen hedder det sammen som mit domain, på domainet
$con = MySqlIConnProceduralStyle(); // databasen hedder test og anvendes under udviklilng
?>
i mysqli kan du skrive i procedural style og OOP style, jeg anbefaler du tillære dig OOP style, da det er det der bliver brugt fremover, i nogle af functionerne har jeg skrevet samme code i prodecural style og oop style og udkommenteret procedural style, så du kan se forskællen
OOP style er også maginalt hurtigere at afvikle da det eneste functionerne i procedural style gør, er at kalde de tilsvarende i OOP style
en anden årsag til du skal vænne dig til oop style er at hvis du på et tidspunkt skifter API fra MysqlI ti PDO (hvilke jeg vil anbefale), kan du kun anvende oop style
toppen af din php fil ser nu sådan ud:
<?php
require_once("functions_db.php");
?>
<!DOCTYPE html>
....
resten af html coden, anvendelsen af konti_ReadAll() er nu ændret
fra
$liste = konti_ReadAll();
til
$liste = konti_ReadAll($con);
@NielsErikP smider du et svar også