Mysql урок 2. соединение с базой данных mysql посредством php

Обучение на PHP-разработчика

Обучение PHP разработчика можно поделить на 3 типа:

  1. Образование в высшем учебном заведении.
  2. Онлайн-курсы.
  3. Самообучение.

Каждый из вариантов не стоит воспринимать обособленно, скорее наоборот. Самый гармоничный способ познать профессию с нуля — получать знания от кого-либо и учиться самому. Знания можно получать в ВУЗе или на онлайн-курсах, а подкреплять их и расширять кругозор можно через самостоятельное обучение.

Высшее образование

Профессии исключительно по PHP в российский ВУЗах не существует, но сам язык программирования и другие дисциплины, которые требуются для работы, есть.

Наиболее подходящими специальностями будут:

  • Автоматизированные системы обработки информации и управления;
  • Вычислительная техника и программное обеспечение;
  • Программная инженерия;
  • Прикладная информатика;
  • Информатика и компьютерные науки;
  • Фундаментальная информатика.

Что касается высших учебных заведений, выделим несколько подходящих:

  • Санкт-Петербургский университет аэрокосмического приборостроения;
  • Московский политехнический университет;
  • Московский государственный технический университет им. Н. Э. Баумана;
  • МИРЭА;
  • Санкт-Петербургский политехнический университет Петра Великого.

Можно подобрать специальность и ВУЗ на сайте Postupi. В нем есть 2 специализации, подходящие под программирование на PHP: web-программист, и разработчик web и мультимедийных приложений.

Обучение онлайн

Онлайн-курсы преподают квалифицированные специалисты, а программа обучения отточена и многократно проверена. После успешного завершения курсов, студенту окажут помощь в устройстве на работу или прохождении стажировки. Всё это будет, если Вы поступите на качественные онлайн-курсы.

2 популярных онлайн-курса по профессии:

1. Профессия “PHP-разработчик” на Skillbox

Годовая образовательная программа, в которой обучают работе с нуля, а в качестве основного фреймворка выбран Symfony.

Ссылка на курс и подробности: https://skillbox.ru/course/profession-php/

2. Курс “Веб-программирование с нуля” от Нетологии

Это общая программа обучения, которая не сконцентрирована на PHP, а делает из студента универсального веб-разработчика. В курсе есть всё, что понадобится для освоения профессии.

Ссылка на курс и подробности: https://netology.ru/programs/web-developer

Самостоятельное обучение

PHP великолепно подходит и для самостоятельного обучения. Целеустремленный, дисциплинированный и трудящийся человек, вполне способен с нуля освоить специальность вплоть до миддл уровня (при наличии практики). Можно не потратить таким образом ни копейки, либо же вложиться в покупку недорого курса, книги или лекции. Это тот редкий случай, когда речь идет о программировании и самообучении, и оба этих термина не являются чем-то несовместимым.

Далее перечислены несколько ссылок на материалы, которые можно использовать для самообразования.

Подборка книг:

  • Самоучитель PHP 7. Игорь Симдянов;
  • PHP 7 в подлиннике. Дмитрий Котеров;
  • Изучаем PHP 7. Дэвид Скляр;
  • Объекты, шаблоны и методики программирования. Мэтт Зандстра;
  • Чистый код. Создание, анализ и рефакторинг. Мартин Роберт К.

Источники для самостоятельного обучения:

  • YouTube-канал Дмитрия Афанасьева, посвященный программированию на PHP и не только;
  • Введение в PHP 7 (обзор изменений по сравнению с предыдущей версией);
  • Уроки по PHP на русском;
  • Обзор PHP для начинающих;
  • Изучение PHP с нуля на русскоязычном сайте;
  • Курсы с текстом и видео на сайте PHP Start;
  • Онлайн-учебник по PHP;
  • Современный учебник по Java Script;
  • Руководство по использованию контроля версий Git;
  • Курс на YouTube по HTML и CSS (на русском языке);
  • Курс на YouTube по SQL.

Выбор данных с mysqli

В следующем примере выбираются столбцы ID, имя и фамилия из таблицы мигуестс и отображаются на странице:

Пример (mysqli объектно-ориентированный)

<?php$servername = «localhost»;$username = «username»;$password = «password»;$dbname = «myDB»;// Create connection$conn = new mysqli($servername, $username, $password, $dbname);// Check connectionif ($conn->connect_error) {    die(«Connection failed: » . $conn->connect_error);
} $sql = «SELECT id, firstname, lastname FROM MyGuests»;$result = $conn->query($sql);if ($result->num_rows > 0) {    // output data of each row    while($row = $result->fetch_assoc()) {        echo «id: » . $row. » — Name: » . $row. » » . $row. «<br>»;    }} else {    echo «0 results»;}
$conn->close();
?>

Строки кода, поясняющие пример выше:

Сначала мы наводим SQL-запрос, который выбирает столбцы ID, имя и фамилия из таблицы мигуестс. Следующая строка кода запускает запрос и помещает результирующие данные в переменную с именем $result.

Затем проверяет, если есть более нуля строк, возвращаемых.

Если возвращено более нуля строк, функция помещает все результаты в ассоциативный массив, через который можно пройти цикл. цикл проходит через результирующий набор и выводит данные из столбцов ID, имя и фамилия.

В следующем примере показано, как в примере выше, в mysqli процедурный способ:

Пример (mysqli процедурный)

<?php$servername = «localhost»;$username = «username»;$password = «password»;$dbname = «myDB»;// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die(«Connection failed: » . mysqli_connect_error());}$sql = «SELECT id, firstname, lastname FROM MyGuests»;$result = mysqli_query($conn, $sql);if (mysqli_num_rows($result) > 0) {    // output data of each row    while($row = mysqli_fetch_assoc($result)) {        echo «id: » . $row. » — Name: » . $row. » » . $row. «<br>»;    }} else {    echo «0 results»;}mysqli_close($conn);
?>

Вы также можете поместить результат в таблицу HTML:

Пример (mysqli объектно-ориентированный)

<?php$servername = «localhost»;$username = «username»;$password = «password»;$dbname = «myDB»;// Create connection$conn = new mysqli($servername, $username, $password, $dbname);// Check connectionif ($conn->connect_error) {    die(«Connection failed: » . $conn->connect_error);
} $sql = «SELECT id, firstname, lastname FROM MyGuests»;$result = $conn->query($sql);if ($result->num_rows > 0) {    echo «<table><tr><th>ID</th><th>Name</th></tr>»;    // output data of each row    while($row = $result->fetch_assoc()) {        echo «<tr><td>».$row.»</td><td>».$row.» «.$row.»</td></tr>»;    }    echo «</table>»;} else {    echo «0 results»;}
$conn->close();
?>

Изменение корня сайта

начинается в каталоге /public. Контейнер PHP 8.0 по умолчанию для Службы приложений использует Nginx, который запускается в корневом каталоге приложения. Чтобы изменить корневой каталог сайта, нужно изменить файл конфигурации Nginx в контейнере PHP 8.0 (/etc/nginx/sites-available/default). Для удобства пример репозитория содержит пользовательский файл конфигурации, который называется default. Как отмечалось ранее, не следует заменять этот файл с помощью оболочки SSH, так как после перезапуска приложения такие изменения будут потеряны.

Инструкции Снимок экрана
На странице Службы приложений сделайте следующее:
  1. В меню слева выберите Конфигурация.

  2. Далее щелкните вкладку Общие параметры.

На вкладке «Общие параметры» сделайте следующее:
  1. В поле Команда запуска введите следующую команду: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.

    Она заменяет файл конфигурации Nginx в контейнере PHP 8.0 и перезапускает Nginx. Такая конфигурация обеспечивает внесение этого изменения в контейнер при каждом его запуске.

  2. Щелкните Сохранить.

PHP программирование => Профессия программиста PHP.

Программист PHP. Виды деятельности:

создание сайтов, веб-приложений, интерфейсов программных систем;

поддержка интернет-проектов и интернет-ресурсов

Места работы:

IT-компании;

организации разрабатывающие и поддерживающие собственные сайты;

научно-исследовательские центры.

Профессиональные навыки:

Владение на высоком уровне: PHP, JS, jQuery, AJAX;

Навыки обмена данными: MySQL, JSON, XML;

Знание LAMP (Linux, Apache, MySQL);

Умение создавать сайты с нуля, веб-приложения, поддерживать их работу;

Управление базами данных;

Обязательно нужно приобрести навыки чтения чужого кода;

Зниние объектно-ориентированного программирования;

Хорошее знание html-верстки, CSS, представление о CSM.

Зарабатная плата:

В регионах: 30 – 100т.руб.

Москва, Санкт-Питербург: 80 – 160т.руб.

Данные по зарплатам взяты из HeadHunter и Superjob за 2017 год. Требования и плата (имеет значение также опыт работы и проф. навыки) в каждой компании разные, мы лишь их обобщили.

Вывод прост. Стоит изучать PHP программирование и и нахлеб у вас всегда будет. Карьерный рост обеспечен и работа всегда будет

Создание формы (выпадающий список) с кнопкой на сайте

Научившись обращаться к базе данных и делать простые кнопки, пришло время сделать форму на сайте в виде выпадающего списка (dropdown menu) и связанную кнопку, которую пользователь может нажать, чтобы выбрать значение, отправить запрос в БД и получить результаты на экране монитора.

На сайте выпадающее меню создается с помощью форм, которые могут быть типа (method=’POST’) или (method=’GET’). 

Чтобы создать выпадающее меню с кнопкой, используется html-тег формы с выбором вариантов через теги:

(можно указать , чтобы при нажатии загружалась эта же программа, либо можно в кавычках указать ссылку на другой файл с кодом, который запустится при нажатии кнопки; важно присвоить — любое имя, на которое затем можно ссылаться в программе);

( — это значение, которое будет записано в переменную при выборе этого пункта, а и   — это то, что показывается пользователю на сайте в выпадающем меню);

внутри формы добавляем кнопку через html-тег .

Пример кода для выпадающего меню с кнопкой методом POST

<form action=» method=’POST’>

<select name=»PlayerID»><option value=»7″>Seven</option><option value=»8″>Eight</option> </select>

<input type=’submit’ name=’submitID’ />

</form>

Создав форму с кнопкой, нам теперь надо уметь получать пользовательский выбор. Если пользователь нажмет кнопку выбора варианта, то программа должна понимать это. Давайте научим компьютер общаться с пользователем. Для этого создам условие с проверкой нажатия кнопки — если кнопка была нажата ( в PHP проверяет, есть ли у переменной значение, отличное от null), то сделай запрос к базе данных и напечатай то, что выбрал пользователь.

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

Получение выбора пользователя после нажатия кнопки на сайте — напечатать одно значение из базы данных (имя седьмого игрока)

if (isset($_POST)){    $number = $_POST;    $query = «SELECT Name FROM igroki WHERE N=’$number’»;    $result = $connect->query($query);    $record = mysqli_fetch_array($result);    echo ‘Name of 7th player: ‘ . $record;}

Подключение

  1. Скачать последний релиз
  2. Подключить
require_once "DataBase-master/autoload.php"; //Подключаем библиотеку

Подключение к СуБД

Синтаксис конструктора базового класса такой же, как и у PHP-PDO

use DigitalStars\DataBase\DB;

$dsn = ''; // Имя источника данных или DSN, содержащее информацию, необходимую для подключения к базе данных. 
$login = ''; // Логин
$pass = ''; // Пароль
$options = []; // Массив ключ=>значение специфичных для драйвера настроек подключения. 

$db = new DB($dsn, $login, $pass, $options);

Пример подключения к MySQL

use DigitalStars\DataBase\DB;

$db_type = 'mysql'; // Это может быть mysql, sybase или любой другой, в зависимости от вашей СуБД
$db_name = 'test'; // Имя БД
$login = 'root'; // Логин
$pass = 'pass'; // Пароль
$ip = 'localhost'; // Адрес

// С портом по умолчанию
$db = new DB("$db_type:host=$ip;dbname=$db_name", $login, $pass);

// С нестандартным портом
$port = 1234;
$db = new DB("$db_type:host=$ip;port=$port;dbname=$db_name", $login, $pass);

// Подключение с выбором кодировки UTF8
$db = new DB("$db_type:host=$ip;dbname=$db_name;charset=utf-8", $login, $pass);

// Или вот так (советуем использовать этот вариант)
$db = new DB("$db_type:host=$ip;dbname=$db_name;", $login, $pass, );
// В этом примере, сразу после подключения выполнится SQL запрос "SET NAMES 'utf8'"

Пример подключение к SQLite

use DigitalStars\DataBase\DB;

$db_type = 'sqlite';
$db_path = 'path/to/file/test.sqlite'; // Путь к файлу с базой данных

// Подключение
$db = new DB("$db_type$db_path");

Операции с таблицами

Мы находимся внутри базы данных Посмотрим список таблиц, которые есть в ней. Для этого выполним команду:

mysql> SHOW TABLES;

Результат:

Просмотр списка таблиц

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

Теперь давайте напишем команду для создания такой таблицы:

mysql> CREATE TABLE cars
( id INT NOT NULL AUTO_INCREMENT, 
title VARCHAR(30) NOT NULL, 
description TEXT NOT NULL,
type ENUM('passenger', 'truck') NOT NULL,
price INT DEFAULT 0, 
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
updated_at TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
PRIMARY KEY (id) )
;

Результат:

Создание таблицы и просмотр списка таблиц

Запрос успешно выполнен. Теперь посмотрим, какие колонки есть в этой таблице, выполнив команду:

mysql> SHOW COLUMNS FROM cars;

Результат:

Просмотр списка колонок в таблице

Довольно часто в проектах возникает потребность менять структуру таблицы. Например, нам сообщили новое требование о том, что у автомобиля должно быть такое свойство как цвет, и оно будет принимать значения , , , и . Давайте попробуем добавить поле с помощью команды:

mysql> ALTER TABLE cars 
ADD COLUMN color
ENUM('white','black','red','green','blue')
NOT NULL AFTER type;

Результат:

Модификация таблицы

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

MySQL также позволяет удалять и таблицы с помощью специальной команды, которая представлена ниже.

Примечание: сейчас этого делать не стоит. Таблица нам еще пригодится:

mysql> DROP TABLE cars;

Метод для старых версий PHP

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

Также давайте приведем пример добавления новой записи (insert into) в таблицу БД с помощью функции . Она может применяться также и для удаления, изменения и выборки данных посредством запроса SQL. Аргументом функции является строка с запросом. В результате возвращается идентификатор запроса.

<html>

<head>

<title>Добавляем новую запись в нашу таблицу</title>

</head>

<body>

<?php

$db = «sample»;

$link = mysql_pconnect ();

if ( !$link )

   die («Подключение к MySQL невозможно!»);

mysql_select_db ( $db ) or die («Нет возможности открыть $db»);

$query = «INSERT INTO books

          VALUES (‘111-2222-33-4’, ‘Иванов Иван’,

          ‘Руководство по PHP’, ‘333’, ‘5’)»;

mysql_query ( $query );

mysql_close ( $link );

?>

</body>

</html>

Функции PHP для работы с базами данных

Что касается необходимых функций, которые можно использовать в процессе взаимодействия с той или иной базой данных, то это лучше почитать документацию по функциям php, которые используются для конкретной базы данных. Но могу сказать, что некоторые функции похожие, например:

MySQL

          
   mysql_connect();

PostgreSQL

          
   pg_connect();

MSSQL

          
   mssql_connect();

Используется уже после подключения к серверу.

MySql

          
   mysql_select_db();

MSSQL

          
   mssql_select_db();

Посыл запроса

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

Для MySQL

          
   mysql_query();

Для MSSQL

         
   mssql_query();

Для PostgreSQL

          
   pg_query();

Во всех этих функциях передается параметр, т.е. сама строка запроса.

Пример рабочего подключения к базе данных и посыл запроса для MySQL

          
   mysql_connect ("localhost", "root","123");//сервер, пользователь, пароль
   mysql_select_db("test") or die (mysql_error());//test база данных
   mysql_query(“select * from table”);//сам запрос

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

Теперь я думаю, Вы понимаете огромные возможности php по работе с базами данных, да и не только с базами данных, PHP — это просто отличный язык программирования. Удачи в освоение языка программирования PHP!

Нравится3Не нравится2

mysqli_fetch_all()

— В переменной $res будет содержаться объект mysqli_result , проще говоря, некая
ссылка на эти данные. С помощью функции mysqli_fetch_all() по этой ссылке получим
необходимые данные в массив $date . В качестве параметра эта функция принимает
результирующий набор $res . Для указания типа получаемого массива применяются константы.

Константа MYSQLI_NUM (по умолчанию) позволяет получить нумерованный массив.

Константа MYSQLI_ASSOC позволяет вместо нумерованного получить ассоциативный массив.

Константа MYSQLI_BOTH позволяет получить оба массива.

Чтобы получить нужные нам поля, их просто нужно перечислить, например: «SELECT name, text, date FROM gb» .

Если нужно сортировать в обратном порядке, используется команда: ORDER BY id DESC , где id — поле, по которому будем сортировать.

Чтобы посмотреть, сколько рядов было выбранно, можно воспользоваться функцией

Что такое заполнители?

Заполнители — специальные типизированные маркеры, которые пишутся в строке SQL запроса вместо явных значений (параметров запроса), чем упрощают читаемость кода и защищают от SQL инъекций.
Заполнители поддерживаются в следующих методах:

  • exec()
  • query()
  • prepare()
<?php
require 'vendor/autoload.php';
use DigitalStars\DataBase\DB;

// Соединение с СУБД SQLite и получение объекта, который включает в себя все методы PHP-PDO и библиотеки
$db = new DB("sqlite:./test.sqlite");

// Получение объекта результата PDOStatement
$result = $db->query("SELECT * FROM users WHERE name = ?s AND age = ?i", );

// Получаем данные (в виде ассоциативного массива)
$data = $result->fetch();

// Не работает запрос? Не проблема - выведите его на печать:
echo $db->getQueryString();

Типы заполнителей и типы параметров SQL-запроса

Типы заполнителей и их предназначение описываются ниже. Прежде чем знакомиться с типами заполнителей, необходимо понять как работает механизм библиотеки DataBase.

$db->query("SELECT ?i", ); 

SQL-запрос после преобразования шаблона:

SELECT 123

Поскольку PHP слаботипизированный язык, то вышеописанное выражение эквивалентно нижеописанному:

$db->query("SELECT ?i", '123'); 

SQL-запрос после преобразования шаблона:

SELECT 123

Приведение к типу заполнителя

$db->query("SELECT ?i", '123.7'); 

SQL-запрос после преобразования шаблона:

SELECT 123

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

Допускаются следующие преобразования:

  • К типу (заполнитель ) приводятся:
    • Числа с плавающей точкой, представленные как или
    • преобразуется в
    • и преобразуется в
  • К типу (заполнитель ) приводятся:
    • Целые числа, представленные как или
    • преобразуется в
    • и преобразуется в
  • К типу (заполнитель ) приводятся:
    • преобразуется в
    • преобразуется в
    • преобразуется в
    • преобразуется в
  • Тип (заполнитель ) просто вставляет в место заполнителя.
    Входные параметры не требуются

Правильная php регистрация и авторизация

Просмотров: 5024

Практически каждому серьёзному сайту требуется авторизация и регистрация пользователя на сайте. Я покажу вам, как сделать это лучше и проще всего.

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

PHP Регистрация

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

//регистрация пользователя
    public function register() {   
        //передаём заголовок для верного распознавания кодировки
        header("Content-Type: text/html; charset=utf-8");
        // методом post передаём данные со стороны клиента
        $name = $this->input->post('name');
        $secondname = $this->input->post('secondname');
        $surname = $this->input->post('surname');
        $userid = $this->input->post('userid');
        $pass = $this->input->post('pass');
        $email = $this->input->post('email');
        // Генерируем соль
        $salt = '$3h$al$' . substr(str_replace('+', '.', base64_encode(pack('N4', mt_rand(), mt_rand(), mt_rand(), mt_rand()))), 0, 22) . '$';
        // Шифруем пароль с применением данной соли
        $hashed_pass = crypt($pass, $salt);
        //выполняем запрос к базе данных
        $query_linked = $this->db->query("INSERT INTO `пользователи` (Логин, Пароль, Соль, Имя, Фамилия, E-Mail, ID_Роль) VALUES ('$userid','$hashed_pass','$salt','$name','$secondname','$email','1')");
        //выводим результат TRUE или FALSE
        echo $query_linked;
    }

В данном коде я:

  1. Передаю заголовок
  2. Получаю данные со стороны клиента
  3. Генерирую соль (это некая строка, с помощью которой мы кодируем наш пароль. В случае его воровства грабителям придётся ой как постараться, дабы подобрать пароль доступа). Запомните — Никогда не храните пароли в открытом виде!
  4. Далее с помощью функции crypt шифруем пароль
  5. Выполняем запрос, который вставит определённую запись в таблицу Пользователи. Вы можете переписать этот запрос под свою структуру БД.

PHP Авторизация

Следующий же код тоже очень прост в использовании. Смотрим и оцениваем.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

//авторизация пользователя
    public function login() {
        header("Content-Type: text/html; charset=utf-8");
        $login = $this->input->post('login');
        $pass = $this->input->post('pass');
        // Генерируем соль
        $salt = '$3h$al$' . substr(str_replace('+', '.', base64_encode(pack('N4', mt_rand(), mt_rand(), mt_rand(), mt_rand()))), 0, 22) . '$';
        // Шифруем пароль с применением данной соли
        $hashed_pass = crypt($pass, $salt);
        $query_check_user = $this->db->query("SELECT пользователи.*,роли.название FROM (пользователи,роли) WHERE пользователи.Логин = " . $this->db->escape($login) . " and пользователи.Пароль = " . $this->db->escape($hashed_pass) . "  and пользователи.ID_Роль = роли.ID");         // Если кол-во строк в ответе больше 0
        if ($query_check_user->num_rows() > 0) {            //представляем результат в виде массива
            $query_check_user = $query_check_user->result_array();            //проходим по всем элементам массива
            foreach ($query_check_user as $query_check_user1) {
                // Создаем массим с данными сессии
                $authdata = array(
                    'username' => $login,
                    'logged_in' => true,
                    'familiya' => $query_check_user1,
                    'name' => $query_check_user1,
                    'name_role' => $query_check_user1
                );
                // Добавляем данные в сессию
                $this->session->set_userdata($authdata);
                $returnText = '1';
            }
        } else{
            $returnText = '0';
        }
        echo $returnText;
    }

В этой функции мы:

  1. Передаём заголовок (см. выше, если не понимаем)
  2. Получаем Логин и Пароль от клиентской стороны
  3. Генерируем соль
  4. Шифруем введённый пароль с солью
  5. Выбираем пользователей, которые подходят под полученные данные
  6. Если кол-во строк в ответе больше 0, то записываем данные в сессию. В противном случае возвращаем 0, т.е. Неудачу (Fail, FALSE и прочие названия).

Данный способ даёт неплохую защиту данных. Практически нереально будет подобрать пароль + даже при воровстве данных информацию не раскодировать, потому что функция crypt кодирует в одну сторону! Раскодировать невозможно!)))) Так что радуемся, репостим, оставляем отзывы и прочее.

Надеюсь, что статья была вам полезна. Жду ваших комментариев! (P.S. Те, кто найдёт самый большой минус в моём коде — получит 100 баллов на счёт! Поехали!)

PDO, получение (чтение) и вывод данных из БД

В PDO получить данные можно двумя способами (методами):

  • query
  • execute

Разберем оба.

Чтение и вывод данных с помощью query

Сразу к примеру:

<?php
$q = 'кодер.укр';

try {
    //соединение с БД
    $dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
    $dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    //получаем данные
    $data = $dbcon->query('SELECT * FROM tableName WHERE fieldName = ' . $dbcon->quote($string));

    //выводим результат
    foreach($data as $rows) {
        print_r($rows);
    }

} catch(PDOException $e) {
    echo 'Ошибка: ' . $e->getMessage();
}

— метод аналогичный , для экранирования данных.

Еще один пример:

<?php
$q = 'кодер.укр';

try {
    //соединение с БД
    $dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
    $dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    //получаем данные
    $data = $dbcon->query('SELECT * FROM tableName');

    //выводим результат
    foreach ($dbcon->query($sql) as $row) {
        echo " ID: ".$row . "<br />"; 
        echo " Name: ".$row . "<br />"; 
        echo " Other field: ".$row . "<br />"; 
    }

} catch(PDOException $e) {
    echo 'Ошибка: ' . $e->getMessage();
}

Чтение и вывод данных с помощью execute

Пример:

<?php
$q = 'кодер.укр';

try {
    //соединение с БД
    $dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
    $data = $dbcon->prepare('SELECT * FROM tableName WHERE fieldName = :q');
    $data->execute(array('q' => $q));

    $result = $data->fetchAll();

    if (count($result)) {
        //выводим результат
        foreach($result as $row) {
            print_r($row);
        }
    } else {
        echo "Нет записей для вывода";
    }

} catch(PDOException $e) {
    echo 'Ошибка: ' . $e->getMessage();
}

Здесь мы работаем с методом . Это сводит к минимуму возможность SQL инъекции. Так как не попадет непосредственно в запрос, а в запросе используем заполнитель .

Так же выводить данные можно следующим образом:

while($row = $data->fetch(PDO::FETCH_OBJ)) {
    print_r($row);
}

— создает анонимный объект со свойствами, которые соответствуют именам столбцов запроса.

— вернет массив, индексированный именами столбцов запроса.

— возвращает массив, индексированный именами столбцов запроса, а также их номерами (начиная с 0). Используется по умолчанию.

— возвращает массив, индексированный номерами столбцов (начиная с 0).

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Вадлейд
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: