Основные моменты работы с PDO выражениями.
<?php
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $opt);
} catch (PDOException $e) {
die('Подключение не удалось: ' . $e->getMessage());
}
/*--------------------------------------Выборка из БД без внешних параметров-----------------------------------------*/
$stmt = $pdo->query('SELECT * FROM `faculties`');
while ($row = $stmt->fetch()) // выбираем данные из ответа, построчно (по рядам полученой в ответе таблицы)
$mass[] = $row[<имя столбца>];
/*------------------------------------------Выборка из БД по параметру----------------------------------------------*/
// Создаем PDO запрос с одним неименованным параметром, который будет подставлен вместо знака "?"
$stmt = $pdo->prepare('SELECT hash FROM `access_keys` WHERE `hash` = ? LIMIT 1');
//выполняем запрос, передав в него МАССИВ с параметрами которые мы определили ранее (Параметры передаем в том порядке в котором мы их описывали)
$stmt->execute([$DATA['surv_id']]);
// вытаскиваем данные из полученного ответа из БД
while ($row = $stmt->fetch())// выбираем данные из ответа, построчно (по рядам полученой в ответе таблицы)
$mass[] = $row[<имя столбца>];
/*------------------------------------------Вставка набора элементов----------------------------------------------*/
try
{
$pdo->beginTransaction();// начинаем транзакцию
foreach($evaluation_params as $key => $param)
{
$sql = 'INSERT INTO `evaluations`(`id_teacher`, `id_question`,`id_group`, `evaluation` ) VALUES (?,?,?,?)';
$stm = $pdo->prepare($sql);
$stm->execute(array($param['id_teacher'], $param['id_quest'], $groupID, $param['evaluation']));
}
$pdo->commit(); // завершаем транзакцию если все вставки прошли успешно
} catch (PDOException $e) {
$pdo->rollBack(); //если поймали исключение, отменяем текущую транзакцию
}
/*----------------------------------------Удаление элемента из таблицы--------------------------------------------*/
try
{
$pdo->beginTransaction();// начинаем транзакцию
foreach($evaluation_params as $key => $param)
{
$sql = 'DELETE FROM `access_keys` WHERE hash=? LIMIT 1';
$stm = $pdo->prepare($sql);
$stm->execute(array($DATA['surv_id']));
}
$pdo->commit();// завершаем транзакцию если все вставки прошли успешно
} catch (PDOException $e) {
$pdo->rollBack();//если поймали исключение, отменяем текущую транзакцию
}