X
Меню сайта
GreenB
Войдите с помощью одной из соцсетей
Или с помощью нашего сайта
Зарегистрироваться Войти
Обратная связь

Обратная связь

Работа с PDO MySQL

расширения php работа с pdo mysql

С MySQL можно работать напрямую, а можно и через расширение. Например, PDO (PHP Data Objects). Одно из главных преимуществ в работе с PDO это ее универсальность. Расширение может работать со многими движками БД.

Причем синтаксис не изменяется, что позволяет переключаться между БД просто изменив настройки подключения.

Подключение PDO

$opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
        PDO::ATTR_PERSISTENT => true
    ];

try {
  
$dbh = new PDO('mysql:host=localhost;dbname='название ДБ'', 'логин', 'пароль', $opt);

   } catch (PDOException $e) {
   
die($e->getMessage());

  }
    

$opt - это необязательная опция

PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION - обработка ошибок. В 8 версии PHP - этот режим включен по умолчанию.

PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC - выборка данных по умолчанию.  PDO::FETCH_ASSOC возвращает ассоциативный массив где ключем является имя столбца а значение ее содержимое

PDO::ATTR_EMULATE_PREPARES => false  - обработка подготовленных выражений. В режиме false за обработку отвечает сама СУБД

PDO::ATTR_PERSISTENT => true - держит постоянное соединение с базой данных. Иногда это полезно. При постоянном подключении запрос кешируется и выдается при новом запросе. Это ускоряет процесс работы. 

$dbh = new PDO('mysql:host=localhost;dbname='название ДБ'', 'пароль', '',$opt) - здесь думаю понятно. Создаем объет с которым и будем работать.

try/catch  перехватывает исключения

Создание таблицы

$sql = 'CREATE TABLE `user` (
	    
		`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
	    
		`login` VARCHAR(300) NULL,                  
	  	
		`data` DATA NUL
	     
		 PRIMARY KEY (id)) ENGINE = InnoDB';
								 
  $sth = $dbh -> exec($data)			

Создаем таблицу 'user' где id является первичным ключом с автоинкрементом (данные будут самостоятельно увеличиваться на 1)

Запись в таблицу user

$sql = "INSERT INTO `user` (                                 
	                    
                    `login`,
					    
		    `data`
							
			     ) 
	                      VALUES (?,?)";
   
 $data = array( 
	       
		   'Логин',
           
		   date('Y-m-d H:i')
	   
	   );
	   
	    $sth =  $dbh -> prepare($sql);
    
	    $sth -> execute($data);  

 prepare ()  создаёт подготовленные запросы. Если в них есть динамические или пользовательские данные лучше использовать этот метод.

Чтение данных из таблицы

$sql = "SELECT * FROM `user` WHERE `id` = :id";
    
    $data = array('id' => $id );
     
    $sth = $dbh -> prepare($sql);
  
    $sth -> execute($data);
   
    $array = $sth -> fetchAll();
  

Опять-таки используем подготовленные запросы, только в этот раз конструкция немного другая. Вместо знака "?" мы пишем :id . В дальнейшем можно использовать обе конструкции, кому какая нравится.

 Здесь мы получим данные столбца таблицы 'user' с нужным id. Данные возвращаются в виде массива

Чтение последней записи таблицы

  $sql = "SELECT * FROM content ORDER BY ID DESC LIMIT 1";
      
    $sth = $dbh -> prepare($sql);
  
    $sth -> execute();
   
    $array = $sth -> fetchAll();

Обновление данных 

   $sql = "UPDATE   `user`   SET 
		                
                    `login` = :login,
		    
                    `data` = :data,
						 
	                   WHERE id = $id";
	  
	 $data = array( 
	          
		'login' => $login,
	         
	         'data' => $data
			  
			  );
      
    $sth = $dbh -> prepare($sql);
  
    $sth -> execute($data);
   
 

Конечно -это самые простые запросы. Но в них можно понять логику работы PDO/

Фактически сами запросы не меняются, а меняется логика их обработки.

В своих приложениях я использую именно PDO, что и вам рекомендую.

P.S

Хотите быстро создать продающую страницу?  Регистрируйтесь и создавайте. Вот инструкция по быстрому старту

🔥
0
🚀
0
0
👎
0
Новое на сайте
Герман Рэй 1 г. 3 м. и 14 д. назад
Если появились вопросы пишите в комментариях или в личку
Ответить