{% else-1 %}
Обновить | Подписаться | Поднять тему
Чтобы выполнить действие авторизируйтесь или пройдите регистрацию на сайте.
1.
atlant * 0.24
[автор] (30 июн 2015, 11:32) [2/0] [2] [отв] [спам] [под] +1 | -1

Думаю тема будет многим интересна, что нам дает PDO?
1) Очень быстрый класс для работы с БД
2) Более лучшая защита при запросах к БД
3) Универсальность, в любой момент можно перескочить на скажем PostgreeSQL и при этом вам не придется лопатить весь сайт переделывая запросы к БД.
---------------
Для удобства выдергиваем уже готовый класс из движка RotoCMS, дабы не мучиться в дальнейшем с определениями использовать ?id или :id
1) Обращение к PDO:
обращение к классу PDO происходит непосредственно через DB::run()

2) MYSQL_QUERY:
запрос вида mysql_query будет бить ошибку, и ничего работать не будет, для этого используем
<?php
$a = DB::run()->query("SELECT `name` FROM `user` WHERE `id`=? LIMIT 1",array($id));
?>


тут мы видим id=?,"array($id)) , именно эта конструкция непозволяет производить sql-inj в PDO, можно использовать и id='$id' , но тут уже нужно тщательно смотреть на фильтрацию переменной. (не буду описывать почему именно и что не дает проводить инъекции)
3) MYSQL_FETCH_ASSOC - MYSQL_FETCH_ARRAY:
Данный метод использовать в PDO можно следующими способами
<?php
$q = DB::run() ->query("SELECT `name` FROM `user` WHERE `id`=? LIMIT 1",array($id));
$q = $q - >fetch();
/* или */
$q = DB::run() - > queryFetch("SELECT `name` FROM `user` WHERE `id`=? LIMIT 1",array($id));
?>


3) Циклы WHILE и FOREACH:
<?php
/* while */
$while = DB::run() ->query("SELECT * FROM `user`"*;
while($while = $while - > fetch()){
echo $while['name'].' - '.$while['datereg'].'<br/>';
}

/* foreach тут лучше использовать несколько иной метод, итак поехали*/
$foreach = DB::run() ->query("SELECT * FROM `user`"*;
$foreach = $foreach - > fetchAll();
foreach($foreach AS $fors){
echo $fors['name'].' - '.$fors['datereg'].'<br/>';
}
?>


4) MYSQL_AFFECTED_ROWS - MYSQL_NUM_ROWS:
<?php
/* тут тоже существует два способа получения данных*/
/* первый способ */
$one = DB::run() ->query("SELECT * FROM `user`"*;
$one = $one -> fetchAll();
$ones = count($one);
if($ones > 0){
echo $ones;
}
/* второй способ, он мне нравится больше */
$two = DB::run() -> query("SELECT * FROM `user`"*;
if ($two -> rowCount() > 0) {
echo $two->rowCount();
}
?>

2.
#FWLone * 9.56
(30 июн 2015, 11:43) [0/0] [0] [отв] [спам] [под] +1 | -1

*
Добавлено 30.06.15 в 11:44:11:

1) Очень быстрый класс для работы с БД
2) Более лучшая защита при запросах к БД

*

3.
SifoN * 1.04
(30 июн 2015, 11:48) [0/0] [0] [отв] [спам] [под] +1 | -1

Да ты что? Спасибо автор что сказал что вообще пдо существует* ты еще про html напиши*


Изм. 1 раз. / Посл. изм.
SifoN * 1.04
(30 июн 2015, 11:49)
4.
Anvar * 3.33
(30 июн 2015, 11:49) [0/0] [0] [отв] [спам] [под] +1 | -1

Тот кто сможет его использовать, тому он не нужен.

5.
atlant * 0.24
[автор] (30 июн 2015, 11:51) [0/0] [0] [отв] [спам] [под] +1 | -1
SifoN,

Просто написал , делать было нечего вот и сделал *

6. (30 июн 2015, 11:53) [0/0] [0] [отв] [спам] [под] +1 | -1

Первый пункт - бред!

7.
atlant * 0.24
[автор] (30 июн 2015, 11:58) [0/0] [0] [отв] [спам] [под] +1 | -1
Не знаю,

Может быть, но остальные то норм

8. (30 июн 2015, 12:08) [0/0] [0] [отв] [спам] [под] +1 | -1

Не проще использовать обертки типа ActiveRecord, Query Builder?

9.
Chainsaw * [мошенник]
(30 июн 2015, 12:09) [0/0] [0] [отв] [спам] [под] +1 | -1
Хануман,

первый пост скопирован

10. (30 июн 2015, 12:12) [0/0] [0] [отв] [спам] [под] +1 | -1
Chainsaw,

А ведь и правда. Гугля выдает ссылку на такую же статью

Чтобы писать сообщения авторизируйтесь или пройдите регистрацию на сайте.
Подписаны: 1
Скачать тему | Файлы темы | Фильтр сообщений