دورة mysql للمبتدئين الدرس الثاني


فهاد الدرس الثاني من دورة mysql للمبتدئين غادي نكملو الدورة ديالنا منبعد ما شفنا كيفاش نزيدو قاعدة البيانات ونزيدو الجدول ديال المستخدمين وزدنا فيه مستخدم دبا غادي نشوفوا كيفاش نزيدو أكثر من مستخدم فنفس الوقت وغادي نشوفوا كيفاش نحميو les requêtes ديالنا من الإختراق وكيفاش نسترجع المعلومات لي زدت ونعرضها.


1- إضافة أكثر من مستخدم لقاعدة البيانات

شفنا كيفاش زدنا مستخدم للجدول users دبا غادي نشوفوا كيفاش نزيدوا أكثر من واحد فنفس الوقت.
كنخدم بنفس الطريقة لي شفنا قبل فقط كنزيد أكثر من requêtes لل variable $sql باستعمال =. لي كتعني بلي كنزيد عليها requête أخرى منبعد كنخدم بل fonction multi_query يعني غادي نفذ أكثر من requête  وحدة.
منبعد كنتحقق يلا دازت كن afficher رسالة نجاح مدازتش كن afficher رسالة خطأ الكود لي زدنا هو :

                                //index.php

<?php
    $host = 'localhost';
    $user = 'root';
    $password = '';
    $db = 'php_course';
    //open connection
    $con = new mysqli($host,$user,$password,$db);

    if($con->connect_error){
        die('erreur de connexion');
    }
    //echo 'connexion réussie';
    $sql = "INSERT INTO users(nom,prenom,email) VALUES ('samadi','samir','samir@email.com');";
    $sql .= "INSERT INTO users(nom,prenom,email) VALUES ('amine','amine','amine@email.com');";
    $sql .= "INSERT INTO users(nom,prenom,email) VALUES ('hassan','hassan','hassan@email.com');";
    if ($con->multi_query($sql) === TRUE) {
        echo "utilisateurs ajoutés";
    } else {
        echo "Erreur : " . $con->error;
    }
    //close connection
    $con->close();
    //close connection
    $con->close();
?>
                            

2- حماية les requêtes من الإختراق

باش نحمي les requêtes ديالي من الإختراق كنخدم ب prepare فهاد ل fonction كتاخد requête  وكتوجدها مكتنفذهاش حيت كنعطيها القيم على شكل علامة استفهام من بعد كنخدم ب fonction bind_param لي كتمكن من إضافة القيم للحقول عاد كتنفذ requête باستعمال execute.
tفالمثال لي عندي وجدت requête ب prepare  منبعد زدت القيم للحقول ب bind_param  فهاد الطريقة كتحميني من sql injection لي كتمكن المخترق من أنه يرسل القيم لي بغى لقاعدة البيانات ديالنا منبعد نفذتها باستعمال execute بالنسبة ل sss فكتعني بلي كل حقل type ديالو string.
الكود لي زدنا هو :

                                //index.php

<?php
    $host = 'localhost';
    $user = 'root';
    $password = '';
    $db = 'php_course';
    //open connection
    $con = new mysqli($host,$user,$password,$db);

    if($con->connect_error){
        die('erreur de connexion');
    }
    //echo 'connexion réussie';
    // $sql = "INSERT INTO users(nom,prenom,email) VALUES ('samadi','samir','samir@email.com');";
    // $sql .= "INSERT INTO users(nom,prenom,email) VALUES ('amine','amine','amine@email.com');";
    // $sql .= "INSERT INTO users(nom,prenom,email) VALUES ('hassan','hassan','hassan@email.com');";
    // if ($con->multi_query($sql) === TRUE) {
    //     echo "utilisateurs ajoutés";
    // } else {
    //     echo "Erreur : " . $con->error;
    // }
    //prepared queries
    $sql = $con->prepare("INSERT INTO users(nom,prenom,email) VALUES (?,?,?)");
    $sql->bind_param('sss',$nom,$prenom,$email);
    $nom = 'hamoudi';
    $prenom = 'farid';
    $email = 'farid@email.com';
    if ($sql->execute() === TRUE) {
        echo "utilisateur ajouté";
    } else {
        echo "Erreur : " . $con->error;
    }
    //close connection
    $con->close();
    //close connection
    $con->close();
?>
                            

3- إسترجاع المستخدمين من قاعدة البيانات

فباش نسترجع المستخدمين من قاعدة البيانات كنخدم ب requête SELECT ممكن نسترجع كلشي ب * SELECT النجمة كتعني الحقول كاملين أو نحدد الحقول لي بغيت فيلا بغيت غير nom ول prenom كندير SELECT nom,prenom وكنزيد FROM users لي كتعني من la table users.
فالمثال لي عندنا استرجعنا المستخدمين كاملين ب requête select منبعد عطيناهم لل variable $result الكود لي زدنا هو :

                                //index.php

<?php
    $host = 'localhost';
    $user = 'root';
    $password = '';
    $db = 'php_course';
    //open connection
    $con = new mysqli($host,$user,$password,$db);

    if($con->connect_error){
        die('erreur de connexion');
    }
    $sql = "SELECT * FROM users";
    $result = $con->query($sql);

    //close connection
    $con->close();
?>
                            

4- عرض المستخدمين لي استرجعنا

باش نعرض المستخدمين لي استرجعت كنخدم بل boucle while لي سبق شفنا.
كنخدم بل fonction fetch_assoc لي كتحول المعلومات لجدول منبعد كنعطيهم لل variable $row لي منبعد كنعرضهم باستعمال ل index.
فالمثال لي عندنا هادشي لي درنا زدنا table لي عرضناها ب echo منبعد درنا ل boucle باش عرضنا المستخدمين.
الكود لي زدنا هو :

                                    //index.php

<?php
    $host = 'localhost';
    $user = 'root';
    $password = '';
    $db = 'php_course';
    //open connection
    $con = new mysqli($host,$user,$password,$db);

    if($con->connect_error){
        die('erreur de connexion');
    }
    $sql = "SELECT * FROM users";
    $result = $con->query($sql);
    echo "<table><tr><th>Nom</th><th>Prénom</th><th>Email</th></tr>";
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row["nom"]."</td><td>".$row["prenom"]." ".$row["email"]."</td></tr>";
    }
    echo "</table>";
    //close connection
    $con->close();
?>