Guest User

Untitled

a guest
Sep 22nd, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1. <?php
  2.  
  3. // Основные команды и сниппеты при использовании PDO
  4.  
  5. //Соединение с БД
  6. $db = new PDO('mysql:host=localhost;dbname=mini-site', 'root', '');
  7.  
  8. // 1. Выбор данных из БД без защиты
  9. $username = 'Joker';
  10. $password = '555';
  11.  
  12. $sql = "SELECT * FROM users WHERE name = '{$username}' AND password = '{$password}' LIMIT 1";
  13.  
  14. $result = $db->query($sql);
  15.  
  16. echo "<h2>Выборка записи без защиты от SQL инъекций</h2>";
  17.  
  18. if ($result->rowCount() == 1 ) {
  19. $user = $result->fetch(PDO::FETCH_ASSOC);
  20. echo "Имя пользователя: {$user['name']} <br>";
  21. echo "Пароль пользователя: {$user['email']} <br>";
  22.  
  23. // 2. Выбор данных из БД с защитой от SQL инъекций - в ручном режиме
  24. $username = 'Joker';
  25. $password = '555';
  26.  
  27. $username = $db->quote( $username );
  28. $username = strtr($username, array('_' =>'\_', '%' => '\%') )
  29.  
  30. $password = $db->quote( $password );
  31. $password = strtr($password, array('_' =>'\_', '%' => '\%') )
  32.  
  33. $sql = "SELECT * FROM users WHERE name = '{$name}' AND password = '{$password}' LIMIT 1";
  34.  
  35. $result = $db->query($sql);
  36.  
  37. echo "<h2>Выборка записи без защиты от SQL инъекций</h2>";
  38.  
  39. if ($result->rowCount() == 1 ) {
  40. $user = $result->fetch(PDO::FETCH_ASSOC);
  41. echo "Имя пользователя: {$user['name']} <br>";
  42. echo "Пароль пользователя: {$user['email']} <br>";
  43. }
  44.  
  45. // 3. Выбор данных из БД с защитой от SQL инъекций - в автовматиическом режиме
  46. $sql = "SELECT * FROM users WHERE name = :username AND password = :password LIMIT 1";
  47.  
  48. $stmt = $db->prepare($sql);
  49.  
  50. $username = 'Joker';
  51. $password = '555';
  52.  
  53. $stmt->bindValue(':username', $username);
  54. $stmt->bindValue(':password', $password);
  55. $stmt->execute();*/
  56.  
  57. // Если мы не хотим для каждого значения вызывать метод bindValue то можно сразу в ->execute
  58. $stmt->execute(array(':username' => $username, ':password' => $password));
  59.  
  60. $stmt->bindColumn('name', $name);
  61. $stmt->bindColumn('email', $email);
  62.  
  63. echo "<h2>Выборка записи с автоматической защитой от SQL инъекции: </h2>";
  64. $stmt->fetch();
  65. echo "Имя пользователя: {$name} <br>";
  66. echo "Email пользователя: {$email} <br>";
  67.  
  68. // 4. Выбор данных из БД с защитой от SQL инъекций - в автовматиическом режиме. Другой вариант запроса
  69. $sql = "SELECT * FROM users WHERE name = ? AND password = ? LIMIT 1";
  70. $stmt = $db->prepare($sql);
  71.  
  72. $username = 'Joker';
  73. $password = '555';
  74.  
  75. // Экранирование от передачи скриптов
  76. // $username = htmlentities($username);
  77. // $password = htmlentities($password);
  78.  
  79. $stmt->bindValue(1, $username);
  80. $stmt->bindValue(2, $password);
  81. $stmt->execute();
  82.  
  83. $stmt->bindColumn('name', $name);
  84. $stmt->bindColumn('email', $email);*/
  85. // Если мы не хотим для каждого значения вызывать метод bindValue то можно сразу в ->execute
  86. $stmt->execute( array($username, $password));
  87. echo "<h2>Выборка записи с автоматической защитой от SQL инъекции: </h2>";
  88. $stmt->fetch();
  89. echo "Имя пользователя: {$name} <br>";
  90. echo "Email пользователя: {$email} <br>";
  91.  
  92. // Вставка данных в БД
  93. $db = new PDO('mysql:host=localhost;dbname=mini-site', 'root', '');
  94. // Готовим запрос в БД
  95. $sql = "INSERT INTO users(name, email) VALUES (:name, :email)";
  96. $stmt = $db->prepare($sql);
  97.  
  98. $username = "Flash";
  99. $useremail = "flash@gmail.com";
  100.  
  101. $stmt->bindValue(':name', $username);
  102. $stmt->bindValue(':email', $useremail);
  103. $stmt->execute();
  104.  
  105. // $stmt-execute( array(':username' => $username, ':password' => $password));
  106.  
  107. echo "<p>Было затронута строка: " . $stmt->rowCount() . "</p>";
  108. echo "<p>ID вставленной записи: " . $db->lastInsertId() . "</p>";
  109.  
  110. // Обновление данных
  111. $db = new PDO('mysql:host=localhost;dbname=mini-site', 'root', '');
  112.  
  113. $sql = "UPDATE users SET name = :name, email = :email WHERE id = :id";
  114.  
  115. $stmt = $db->prepare($sql);
  116.  
  117. $username = "New Flash";
  118. $useremail = "flash@inbox.com";
  119. $id = '5';
  120.  
  121. $stmt->bindValue(':name', $username);
  122. $stmt->bindValue(':email', $useremail);
  123. $stmt->bindValue(':id', $id);
  124. $stmt->execute();
  125.  
  126. echo "<p>Было затронуто строк: " . $stmt->rowCount() . "</p>";
  127.  
  128. // Удаление данных
  129. $db = new PDO ('mysql:host=localhost;dbname=mini-site', 'root', '');
  130.  
  131. $sql = "DELETE FROM users WHERE name = :name";
  132. $stmt = $db->prepare($sql);
  133.  
  134. $username = "New Flash";
  135.  
  136. $stmt->bindValue(':name', $username);
  137. $stmt->execute();
  138.  
  139. echo "<p>Было затронуто строк: " .$stmt->rowCount(). "</p>";
  140.  
  141. ?>
Add Comment
Please, Sign In to add comment