Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
1

PDO - нужны ответы!

21.09.2016, 17:31. Показов 1268. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я только начинающий программист, и благодаря "тонким" намекам я понял, что для защиты своих запросов к БД придется учить PDO. Я прочитал пособие, но все-же есть вопросы, на которые я попрошу вас ответить!
1. Соединение с БД: (пример)
PHP
1
2
3
4
5
6
      $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
      $opt = array(
           PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
           PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
           );
         $pdo = new PDO($dsn, $user, $pass, $opt);
Это идет как обычное соединение с БД типа mysql_connect("","",""); и mysql_select_db("") но с подключением PDO так?;

2. можете обьяснить для чего используется charset и для чего нужет параметр $opt в
PHP
1
 $pdo = new PDO($dsn, $user, $pass, $opt);
3. Подготовленые выражения (пример):
PHP
1
$sql = 'SELECT name FROM users WHERE email = :email';
тут :email это название поля в таблице? или просто как маркер для
PHP
1
$stmt->execute(array('email' => $email));
4. на счет этого немного не врубился (пример):
PHP
1
$stmt = $pdo->prepare('SELECT name FROM users WHERE email = ?');
позиционные плейсхолдеры (?), для которых важен порядок передаваемых переменных
это значит, что если у меня несколько условий например
PHP
1
$stmt = $pdo->prepare('SELECT name FROM users WHERE email = ? AND id= ?');
то описывать их я должен stmt->execute(array($email,$id)); и нельзя наоборот?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2016, 17:31
Ответы с готовыми решениями:

Нужны ответы
Привет, Всем. Вообщем такая проблема - через 2 часа сдаю допуск к экзамену. Я прикладной...

Нужны ответы
Хочу задать несколько вопросов. Если чтото по глупому сформировал, извиняйте, чайник еще) 1. Как...

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

Нужны ответы
1. Можно ли функции в качестве аргумента передать массив? Объясните ответ на примере. 2. Как...

15
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
21.09.2016, 17:48 2
Цитата Сообщение от Shoshona Посмотреть сообщение
но с подключением PDO так?;
так
Цитата Сообщение от Shoshona Посмотреть сообщение
можете обьяснить для чего используется charset и для чего нужет параметр $opt в
  • charset - установка кодировки, обычно равно utf8
  • opt - настройка PDO
в данном случае устанавливается
  1. при fetch по умолчанию возвращать массив(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC)
  2. генерировать исключения вместо варнингов(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
Цитата Сообщение от Shoshona Посмотреть сообщение
ут :email это название поля в таблице? или просто как маркер для
это именованный параметр запроса -
Цитата Сообщение от Shoshona Посмотреть сообщение
на счет этого немного не врубился (пример):
Цитата Сообщение от Shoshona Посмотреть сообщение
то описывать их я должен stmt->execute(array($email,$id)); и нельзя наоборот?
Да нельзя - неименнованые параметры подставляются именно в том порядке, в котором они идут в массиве
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
22.09.2016, 15:39  [ТС] 3
Max Dark,
Цитата Сообщение от Max Dark Посмотреть сообщение
charset - установка кодировки, обычно равно utf8
а если не указывать чарсет? по умолчанию будет utf-8?
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
22.09.2016, 18:01 4
Цитата Сообщение от Shoshona Посмотреть сообщение
а если не указывать чарсет? по умолчанию будет utf-8?
по умолчанию будет то, что прописано в конфигах.
Так что лучше указывать явно 'charset=utf8'
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
26.09.2016, 15:23  [ТС] 5
Max Dark, подскажите или правильно будет записать запрос в таком виде:
PHP
1
$result =$pdo->query ("SELECT * FROM wp_posts_us  WHERE access='true'AND hot_to_gen='true' UNION SELECT * FROM wp_posts_job WHERE access='true' AND hot_to_gen='true' ORDER BY id DESC LIMIT 3");
Добавлено через 2 часа 7 минут
Подскажите норм плагин на вордпресс споддержкой PDO!
0
87 / 87 / 41
Регистрация: 09.05.2015
Сообщений: 315
27.09.2016, 03:00 6
Wordpress предполагает использование $wpdb для сложных запросов. Там также используются подготовленные выражения, автоматически подставлются префиксы, и прочие удобности есть.

Не по теме:


Я искал возможности удобно работать со своими таблицами в WP, но ничего не нашел. Лучше использовать кастомные типы постов, все будет храниться в таблице posts. Для своих таблиц в админке придется писать с нуля весь интерфейс для работы с сущностями.

0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
21.12.2016, 15:23  [ТС] 7
И снова здравствуйте!
у меня есть запросс
PHP
1
2
3
4
session_start();
  $user = $_SESSION["email"];
  $favor = $db->prepare('SELECT * FROM wp_favourite WHERE user = ?'); //19 строка
  $favor->execute(array($user));
мне выдает ошибку
Fatal error: Call to a member function prepare() on a non-object in page-favorites.php on line 19
что я не так сделал?
0
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
21.12.2016, 16:45 8
Ошибку читали? Попытка вызова функции у не-объекта. Т.е. $db не является объектом. Проверяйте, что внутри.
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
21.12.2016, 17:24  [ТС] 9
Jodah, но у меня
PHP
1
2
3
4
5
6
7
8
try {
  $db = new PDO("mysql:host=$host;dbname=$dbase", $user, $pass);
  $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $db->exec("set names utf8");
}
catch(PDOException $e) {
    echo $e->getMessage();
}
разве не с него должно тянуть?
0
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
21.12.2016, 17:49 10
Shoshona, в предыдущем сообщении нет подключения к PDO, а также нет никаких include/require. Так откуда $db должна взяться? Если она объявляется где-то в другом файле, значит надо этот файл подключить.
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
21.12.2016, 18:47  [ТС] 11
Jodah, у меня все подключено. Подключение PDO идет в файле header.php
в каждом файле я делаю include("header.php").
0
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
21.12.2016, 19:21 12
Shoshona, так показывайте код полностью, с подключениями.
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
21.12.2016, 19:58  [ТС] 13
Jodah,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$host = 'ewartfghj';
 $dbase = 'poiug';
 $charset = 'utf-8';
 $user = 'ksdkfn';
 $pass = 'a3i4tosdf';
try {
  $db = new PDO("mysql:host=$host;dbname=$dbase", $user, $pass);
  $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $db->exec("set names utf8");
}
catch(PDOException $e) {
    echo $e->getMessage();
}
session_start();
  $user = $_SESSION["email"];
$favor = $db->prepare('SELECT * FROM wp_favourite WHERE user = ?');
$favor->execute(array($user));
0
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
21.12.2016, 20:07 14
Shoshona, в конец скрипта:
PHP
1
var_dump($db);
Что выведет?
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
21.12.2016, 20:41 15
Цитата Сообщение от Shoshona Посмотреть сообщение
$host = 'ewartfghj';
это что? такой хост? может localhost
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
22.12.2016, 10:49  [ТС] 16
Jodah,
object(PDO)#3409 (0) { }
0
22.12.2016, 10:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2016, 10:49
Помогаю со студенческими работами здесь

Нужны ответы
Контрольные вопросы. 1. По каким признакам классифицируются структуры данных? 2. К какой группе...

нужны ответы по c++
1. Разрешается ли объявлять массив в качестве поля класса. Как присвоить элементам массива...

Теория, нужны ответы
Ребят! Срочно! Очень! Прошу, помогите с ответами. Желательно с примерами. 1. Строковы тип...

Помогите с тестами. Нужны ответы!!!
1. В нижеприведенной таблице хранится информация о студентах. При этом известно, что студент может...

Нужны ответы на тесты по информатике
Помогите с ответами на тест по информатике поможем конечно, задания на форум потрудитесь...

Нужны ответы на вопросы по истории
Нужны ответы на следующие вопросы по истории: 1. Особенности становления и развития Древней...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru