<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

В начале курса у нас будет только идея, а в конце готовый продукт, который можно использовать в практических целях.

В рамках упражнений курса Вы параллельно со мной будете создавать свою большую программу на Java, что даст Вам необходимую практику, после которой для Вас уже не будет разницы, какого размера создавать программы.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

PDO. Часть 2.

PDO. Часть 2.

В этой статье мы разберём основные методы для работы с данными в PDO.

Для начала давайте установим соединение с нашей базой данных MySQL.

$host = 'localhost'; // хост
$dbname = 'test'; // название базы
$user = "admin"; // логин пользователя
$pass = 123; // пароль
$db = new PDO("mysql:host=$host;dbname=$db", $user, $password);

В результате, в $db попадёт объект, используя который мы сможем работать с нашей базой. Давайте этим и займёмся.

К примеру, мы хотим что-нибудь вставить, тогда будем использовать метод exec.

$sql = "INSERT INTO(login, password) VALUES($login, $password)";
$res = $db->exec($sql);

Наш запрос будет выполнен, а в переменную $res попадёт количество затронутых строк.

exec выполняет запросы, но не может получить данные из БД, этим занимается метод query.

$sql = "SELECT login FROM users"; $res = $db->query($sql);

Однако не стоит забывать про безопасность и про то, что данные нужно проверять. Для этого раньше нам нужно было сделать примерно следующее:

$sql = "SELECT * FROM users WHERE login = $login";
$login = $_POST["login"];
$login = mysql_real_escape_string($login); // MySQL
$login = sqlite_escape_string($login); // sqlite
$login = pg_escape_string($login); // PostgreSQL

Теперь за нас всё сделает PDO и его метод quote.

$login = $db->quote($login);
$result = $db->query($sql);

Чтобы преобразовать вернувшийся результат в массив, мы использовали функции mysqli_fetch_assoc() для ассоциативного и mysqli_fetch_num() для нумерованного массива. Посмотрим, как это делается в PDO.

$stmt = $db->query($sql);

$res = $stmt->FETCH(PDO::FETCH_ASSOC); // ассоциативный

$res = $stmt->FETCH(PDO::FETCH_NUM); // нумерованный

$res = $stmt->FETCH(PDO::FETCH_BOTH); // ассоциативный и нумерованный вместе

$res = $stmt->FETCH(PDO::FETCH_OBJ); // объектный тип

$res = $stmt->FETCH(PDO::FETCH_LAZY); // сразу все типы

Думаю, тут всё понятно. Мы просто вызываем метод FETCH и передаём туда соотвествующую константу. В использовании проблем возникнуть так же не должно.

echo $res["name"]; // ассоциативный

echo $res[0]; // нумерованный

echo $res->name; // объектный

Используя константу FETCH_LAZY, вы можете извлекать данные любым удобным для вас способом, но помните, что это плохо для производительности.

Метод FETCH возвращает одну запись, а чтобы получить все, нам следует использовать FETCHALL.

$stmt = $db->query("SELECT * FROM users");
$res = $stmt->FETCHALL(PDO::FETCH_ASSOC);
foreach($res as $arr) {
  echo $arr["name"]."<br>";
}

Тут пояснять нечего. Давайте лучше поговорим про константу FETCH_CLASS. Эта константа позволяет нам заполнить наш класс данными, полученными из БД.

class User {

  public $login;
  public $pass;

  public function showInfo() {
   echo "<b>".$this->pass."</b>"." : ".$this->login."<br>";
  }
}

$db = new PDO("mysql:host=localhost;dbname=test", "root", "");
$stmt = $db->query("SELECT * FROM `users`");
$result = $stmt->FETCHALL(PDO::FETCH_CLASS, "User");

foreach($result as $user) {
  $user->showInfo();
}

В методе FETCHALL мы указываем константу FETCH_CLASS, а затем название класса в кавычках. После мы перебираем объект с результатом с помощью цикла foreach и выводим информацию. Главное помните, что названия свойств в классе обязаны быть такими же, как и названия полей в базе данных.

Сегодня мы разобрали основные способы работы с базой данных, а в следующей статье перейдём к уже более сложным, но интересным фишкам PDO.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (1):

Васек Васек 09.09.2016 19:29:25

$host = 'localhost'; // хост $dbname = 'test'; // название базы $user = "admin"; // логин пользователя $pass = 123; // пароль $db = new PDO("mysql:host=$host;dbname=$db", $user, $password); Михаил в данном фрагменте допущены ошибки переменные разные в одном месте переменная $pass, а в другом месте называется $password и еще одна $dbname, а в другом месте просто $db. Я использую БД mysql пришлось моленько изменить запрос sql добавление после INTO названия Таблицы, также поэкспериминтировал с `` - кавычками вокруг параметров они на выполнение запроса не повлияли, также ;-точка с запятой в конце запроса на работу не повлияли. ЕСЛИ ЧИТАЕТЕ КОММЕНТАРИИ НАПИШИТЕ

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.