Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Основные команды и сниппеты при использовании PDO
- //Соединение с БД
- $db = new PDO('mysql:host=localhost;dbname=mini-site', 'root', '');
- // 1. Выбор данных из БД без защиты
- $username = 'Joker';
- $password = '555';
- $sql = "SELECT * FROM users WHERE name = '{$username}' AND password = '{$password}' LIMIT 1";
- $result = $db->query($sql);
- echo "<h2>Выборка записи без защиты от SQL инъекций</h2>";
- if ($result->rowCount() == 1 ) {
- $user = $result->fetch(PDO::FETCH_ASSOC);
- echo "Имя пользователя: {$user['name']} <br>";
- echo "Пароль пользователя: {$user['email']} <br>";
- // 2. Выбор данных из БД с защитой от SQL инъекций - в ручном режиме
- $username = 'Joker';
- $password = '555';
- $username = $db->quote( $username );
- $username = strtr($username, array('_' =>'\_', '%' => '\%') )
- $password = $db->quote( $password );
- $password = strtr($password, array('_' =>'\_', '%' => '\%') )
- $sql = "SELECT * FROM users WHERE name = '{$name}' AND password = '{$password}' LIMIT 1";
- $result = $db->query($sql);
- echo "<h2>Выборка записи без защиты от SQL инъекций</h2>";
- if ($result->rowCount() == 1 ) {
- $user = $result->fetch(PDO::FETCH_ASSOC);
- echo "Имя пользователя: {$user['name']} <br>";
- echo "Пароль пользователя: {$user['email']} <br>";
- }
- // 3. Выбор данных из БД с защитой от SQL инъекций - в автовматиическом режиме
- $sql = "SELECT * FROM users WHERE name = :username AND password = :password LIMIT 1";
- $stmt = $db->prepare($sql);
- $username = 'Joker';
- $password = '555';
- $stmt->bindValue(':username', $username);
- $stmt->bindValue(':password', $password);
- $stmt->execute();*/
- // Если мы не хотим для каждого значения вызывать метод bindValue то можно сразу в ->execute
- $stmt->execute(array(':username' => $username, ':password' => $password));
- $stmt->bindColumn('name', $name);
- $stmt->bindColumn('email', $email);
- echo "<h2>Выборка записи с автоматической защитой от SQL инъекции: </h2>";
- $stmt->fetch();
- echo "Имя пользователя: {$name} <br>";
- echo "Email пользователя: {$email} <br>";
- // 4. Выбор данных из БД с защитой от SQL инъекций - в автовматиическом режиме. Другой вариант запроса
- $sql = "SELECT * FROM users WHERE name = ? AND password = ? LIMIT 1";
- $stmt = $db->prepare($sql);
- $username = 'Joker';
- $password = '555';
- // Экранирование от передачи скриптов
- // $username = htmlentities($username);
- // $password = htmlentities($password);
- $stmt->bindValue(1, $username);
- $stmt->bindValue(2, $password);
- $stmt->execute();
- $stmt->bindColumn('name', $name);
- $stmt->bindColumn('email', $email);*/
- // Если мы не хотим для каждого значения вызывать метод bindValue то можно сразу в ->execute
- $stmt->execute( array($username, $password));
- echo "<h2>Выборка записи с автоматической защитой от SQL инъекции: </h2>";
- $stmt->fetch();
- echo "Имя пользователя: {$name} <br>";
- echo "Email пользователя: {$email} <br>";
- // Вставка данных в БД
- $db = new PDO('mysql:host=localhost;dbname=mini-site', 'root', '');
- // Готовим запрос в БД
- $sql = "INSERT INTO users(name, email) VALUES (:name, :email)";
- $stmt = $db->prepare($sql);
- $username = "Flash";
- $useremail = "flash@gmail.com";
- $stmt->bindValue(':name', $username);
- $stmt->bindValue(':email', $useremail);
- $stmt->execute();
- // $stmt-execute( array(':username' => $username, ':password' => $password));
- echo "<p>Было затронута строка: " . $stmt->rowCount() . "</p>";
- echo "<p>ID вставленной записи: " . $db->lastInsertId() . "</p>";
- // Обновление данных
- $db = new PDO('mysql:host=localhost;dbname=mini-site', 'root', '');
- $sql = "UPDATE users SET name = :name, email = :email WHERE id = :id";
- $stmt = $db->prepare($sql);
- $username = "New Flash";
- $useremail = "flash@inbox.com";
- $id = '5';
- $stmt->bindValue(':name', $username);
- $stmt->bindValue(':email', $useremail);
- $stmt->bindValue(':id', $id);
- $stmt->execute();
- echo "<p>Было затронуто строк: " . $stmt->rowCount() . "</p>";
- // Удаление данных
- $db = new PDO ('mysql:host=localhost;dbname=mini-site', 'root', '');
- $sql = "DELETE FROM users WHERE name = :name";
- $stmt = $db->prepare($sql);
- $username = "New Flash";
- $stmt->bindValue(':name', $username);
- $stmt->execute();
- echo "<p>Было затронуто строк: " .$stmt->rowCount(). "</p>";
- ?>
Add Comment
Please, Sign In to add comment