Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Что делать если PDO возвращает int как string?
- # Ответ: https://toster.ru/q/503132
- ## Получение объекта из БД
- $db = $pdo->prepare(" SELECT `email` FROM `user` ");
- $db->execute();
- $User = $sth->fetch(PDO::FETCH_OBJ);
- $Test = $User->fio;
- echo '<pre>'; var_dump($Test); echo '</pre>'; // тут строка
- echo '<pre>'; var_dump($User); echo '</pre>'; // тут объект
- ## Вставка с получением вставленного ID
- $b=$pdo->prepare(" INSERT INTO `user` SET mail=:mail, datereg=:datereg ");
- $b->bindParam(":mail",$null);
- $b->bindParam(":datereg",$today);
- $b->execute();
- $LastId = $pdo->lastInsertId();
- ## Count
- $auth = $pdo->prepare('SELECT COUNT(*) FROM `user`');
- $auth->execute();
- $Count = $auth->fetchAll();
- $Num = implode('', $Count[0]);
- echo "Num = $Num<br>";
- ## Удаление раньше определённой даты
- $st = $pdo->prepare('DELETE FROM `day` WHERE daydate<:daydate');
- $st->bindParam(':daydate', $DayDel);
- $st->execute();
- ## SELECT с WHERE
- $st = $pdo->prepare('SELECT `email` FROM `user` WHERE email=:email');
- $st->bindParam(':email', $Email, PDO::PARAM_STR);
- $st->execute();
- $User = $st->fetchAll();
- ## SELECT с IN
- $y = '1,2,3';
- $st = $pdo->prepare('SELECT `daydate` FROM `day` WHERE `id` IN ('.$y.') ');
- $st->execute();
- $Res = $st->fetchAll();
- ## SELECT с IN без PREPARE
- $a = $pdo->query('SELECT `daydate` FROM `day` WHERE `id` IN ('.$y.') ')->fetchAll();
- print_r($a);
- ## Простой INSERT без условий
- $b=$pdo->prepare(" INSERT INTO `gk` SET num=:num, name=:name, text=:text ");
- $b->bindParam(":num",$nn[1]);
- $b->bindParam(":name",$title_naz);
- $b->bindParam(":text",$con[0][$i]);
- $b->execute();
- ## UPDATE обновление
- $b=$pdo->prepare(" UPDATE `gil` SET tlong=:tlong WHERE id=:id ");
- $b->bindParam(":tlong",$tlong);
- $b->bindParam(":id",$i);
- $b->execute();
- ## Выбрать максимальный id из таблицы
- $auth = $pdo->prepare('SELECT max(id) FROM `zemk`');
- $auth->execute();
- $Count = $auth->fetchAll();
- ## Запрос с вычитанием (такой же со сложением)
- UPDATE `teest` SET `num`=`num`-13 WHERE `id`=1
- ## Запрос со складыванием и вычитанием полей (складываются 2 поля)
- UPDATE `teest` SET `num`=`num`+`num2` WHERE `id`=1
- ## Посмотреть как выглядит итоговый запрос (если он конструируется)
- $a = $pdo->query('SELECT `hash` FROM `ztest` WHERE `id`='.$y.' ');
- print_r($a);
- ## Запрос без prepare если в этом есть необходимость
- $a = $pdo->query('SELECT `hash` FROM `ztest` WHERE `id`='.$z.' ')->fetchAll();
- print_r($a);
- ## Отладка
- ## Если всё верно и есть ошибка скорее всего название поля зарезервированное слово, например like, desc, or и т.д.
- try {
- $b->execute();
- } catch (PDOException $e) {
- echo "<pre>";
- print_r($e->getMessage());
- $b->debugDumpParams();
- echo "</pre>";
- }
- ###################################################################################
- ##################################### SQL #########################################
- ###################################################################################
- // только уникальные значения
- SELECT DISTINCT
- // Из упражнения 5 SQL-EX. Приоритет оператора AND над OR
- Неверно т.к. выбирает все строки где (цена <600 и сд 24х) или сд 12х
- SELECT model, speed, hd FROM PC WHERE cd='12x' OR cd='24x' AND price < 600
- Верно
- SELECT model, speed, hd FROM PC WHERE cd='12x' AND price < 600 OR cd='24x' AND price < 600
- Верно
- SELECT model, speed, hd FROM pc WHERE cd IN ('12x', '24x') AND price < 600;
- // простейший JOIN
- SELECT u.id, u.worker, d.name AS d_name
- FROM workday u INNER JOIN worker d ON u.worker = d.id // тут будут неуникальные значения, надо сгруппировать
- // простейший JOIN теперь только с уникальными строками
- SELECT u.id, u.worker, d.name AS d_name
- FROM workday u INNER JOIN worker d ON u.worker = d.id GROUP BY `worker`
- // Поиск дубликатов MySQL
- https://snipp.ru/mysql/sql-duplicate-search
Add Comment
Please, Sign In to add comment