Advertisement
Guest User

Code optimisé ;)

a guest
Jan 14th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.84 KB | None | 0 0
  1. <?php
  2.  
  3. session_start();
  4.  
  5. $host = 'mysql:host=mysql-tpemusicinfluence.alwaysdata.net;';
  6. $database = 'dbname=tpemusicinfluence_base';
  7. $user = '175335_besselt';
  8. $password = '********';
  9.  
  10. try{
  11.     // Syntaxe courte pour les tableaux
  12.     $encoding = [ PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ];
  13.     $bdd = new PDO($host . $database, $user, $password);
  14.     $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  15. } catch (PDOException $e) {
  16.     // Si tu fais juste un 'echo' ici ton script continue
  17.     // Mets plutôt un 'throw new Error' pour l'arrêter si une erreur se produit
  18.     throw new Error('Login failed :' . $e->getMessage());
  19. }
  20.  
  21. $fields = [
  22.     'musicFrequenceValue',
  23.     'musicFrequenceMode',
  24.     'musicVolume',
  25.     'musicEvents',
  26.  
  27.     'soundsExposition',
  28.     'soundsFrequenceValue',
  29.     'soundsFrequenceMode',
  30.     'soundsVolume',
  31.  
  32.     'tinnitus',
  33.     'tinnitusFrequenceValue',
  34.     'tinnitusFrequenceMode',
  35.     'auditionTroubles',
  36.     'auditionTroublesValue'
  37. ];
  38.  
  39. $insertQuery = 'INSERT INTO resultsTable ('
  40.                          . join($fields, ', ')
  41.                          . ') VALUES ('
  42.                          . join(
  43.                                 array_map(
  44.                                     function ($field) {
  45.                                         // On préfixe chaque élément du tableau '$field' avec un ':'
  46.                                         return ':' . $field;
  47.                                     },
  48.                                     $fields)
  49.                               , ', ')
  50.                          . ')';
  51.  
  52. $prep = $bdd->prepare($insertQuery);
  53. $prep->execute(
  54.     // '$fields' est la liste des clées du tableau, ses valeurs sont dans '$_SESSION'
  55.     array_combine(
  56.         $fields,
  57.         array_map(
  58.             function ($field) {
  59.                 // Pour chaque champ, on récupère sa valeur sanitisée dans '$_SESSION'
  60.                 return htmlspecialchars($SESSION['field']);
  61.             }, $fields
  62.         )
  63.     )
  64. );
  65.  
  66. $prep->closeCursor();
  67. // Pas besoin de '$prep = NULL;' ici, il n'y a pas de gestion de mémoire manuelle en PHP
  68. // On ne mets pas non plus de '? >', la fin du fichier indique la fin du code PHP automatiquement
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement