[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по подготовленным запросам
maximka787
Мужики, привет, у меня два вопроса по подготовленным запросам


1) Чем отличается

$query = "SELECT * FROM `pages` WHERE `category` = '".intval($category)."' AND `url` = :url";
$stmt = DB::prepare($query);
$stmt->execute(array(':url' => $url));


от

$query = "SELECT * FROM `pages` WHERE `category` = '".intval($category)."' AND `url` = :url";
$stmt = DB::prepare($query);
$stmt->bindParam(':url', $url, PDO::PARAM_STR);
$stmt->execute();


?


2) Можно ли вообще без подготовленного запроса выполнять это?

$query = "SELECT * FROM `pages` WHERE `category` = '".intval($category)."' LIMIT 1";
$stmt = DB::query($query);


_____________
..Работает - не трогай!
twin
Цитата (maximka787 @ 19.12.2017 - 10:23)
Можно ли вообще без подготовленного запроса выполнять это?

Можно и нужно. Кстати, нет такого понятия "подготовленнй запрос".

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
maximka787
twin
Спасибо. Я имел ввиду подготовленное выражение)

А по поводу первого пункта, я так понимаю разницы нет? Конкретно в данном примере, где URL строка.

_____________
..Работает - не трогай!
twin
Подготовленные выражения придуманы вовсе не для безопасности. Но коли уж использовать это побочное явление, то мешать в одну кучу разные спсобы обработки данных не есть хорошо.

Что касаемо биндинга, то в приведенных примерах разницы никакой нет. Если PDO настроен верно.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
maximka787
Цитата (twin @ 19.12.2017 - 11:49)
Но коли уж использовать это побочное явление, то мешать в одну кучу разные спсобы обработки данных не есть хорошо.

Так я и не мешал. Хотя, если речь про это:
$query = "SELECT * FROM `pages` WHERE `category` = '".intval($category)."' AND `url` = :url";

это просто я не стал вносить category в prepare тк в КОНКРЕТНОМ случае никакая инъекция не пролезет и так, ни одним из способов. Там ведь стоит intval().

А вообще вся это затея с PDO это лишь потому, что дали задание обновить скрипты на mysqli. Я решил, пусть будет сразу PDO. И все эти prepare ТОЛЬКО лишь для защиты от инъекций.

_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.