marți, 16 octombrie 2018


     Dupa cum probabil ai observat, daca ai un site mai vechi dezvoltat in PHP (versiune <5.2) si incerci sa folosesti functii precum mysql_query iti va aparea pe ecran o eroare de genul:"These functions are deprecated". Functiile se "depreciaza" atunci cand o noua tehnologie apare pentru versiunile de PHP mai noi. Acestea sunt inlocuite de sintaxe fie cu potential de procesare rapida mai mare, fie cu factori de securitate mai bine definiti si integrati. Fiind la acest capitol vom discuta despre inlocuirea functiilor de inserare a datelor prin intermediul declaratiilor pregatite, traducand mot-a-mot din englezescul prepared statements. 
     Cum folosim aceste declaratii pregatite pentru a insera datele in baza de date MySQL? Vom folosi puterea exemplului pentru a invata si a aplica pe cont propriu in mod euristic restul functiilor.

Presupunem ca avem in scheletul HTML 3 casute de tip text in care introducem date de la tastatura. Datele le transmitem in baza de date prin apasarea butonului de tip submit al formularului.

Cod PHP:
<?php
if (isset($_POST['submit'])) { // ne ocupam de erori- nu vrem ca serverul sa ceara date inainte ca acestea sa fi fost transmise
$host       = "localhost";
$username   = "user_name";
$password   = "pass_word";
$dbname     = "form"; 
$dsn        = "mysql:host=$host;dbname=$dbname"; 
$options    = array(
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
              );

try { //ne ocupam de erori- sa prindem eroarea in cazul in care esueaza functia noastra (nu poti fi niciodata sigur)- englezescul error handling
$connection = new PDO($dsn, $username, $password, $options);

    $stmt=$connection->prepare("INSERT INTO form1(name,address,phone_nr)  
       VALUES (:name,:address,:phone_nr)");  //pregatim variabilele 

    $stmt->bindParam(':name',$name);  //legam (de la bind) sau asociem variabila pregatita cu variabila PHP
    $stmt->bindParam(':address',$address);
    $stmt->bindParam(':phone_nr',$phone_nr);

    $date = date('Y-m-d');
    $name =$_POST['name'];  //atribuim variabilei PHP valoarea postata din casuta de tip text a scheletului HTML 
    $address =$_POST['address'];
    $phone_nr =$_POST['phone_nr'];

    $stmt->execute();  // executam query-ul

}
catch(PDOException $e)
{
echo "Error: " .$e->getMessage();
}
$connection = null;
}
?>

 <!--html e intuitiv si nu cred ca trebuie explicat, dar imi scrieti in comentarii daca sunt nelamuriri-->
HTML code:
<!DOCTYPE html>

<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <title>Data entry form</title>
  </head>

<body>
<label  for "name"> Name</label>
<input  type ="text" name="name" />

<label  for "address"> Address</label>
<input  type ="text" name="address" />

<label  for "phone_nr"> Phone number</label>
<input  type ="text" name="phone_nr" />

<input type="submit" name="submit" value="Register data">
</body>

</html>

Urmatoarea postare
Aceasta este cea mai recenta postare.
Postare mai veche

0 comentarii:

Trimiteți un comentariu