221VOLT написав:iovchynnikov написав:221VOLT написав:чим це він потужніший?
який саме запит вразливий на SQL injection ?
Цей:
$query = 'SELECT * FROM users where id='.$id; <---
$res = mysql_query($query);
Використовуйте prepared statements або хоча б mysql_real_escape_string($id)
Потужніший хоча б тому що не пов'язаний лише з mysql, підтримує іменовані параметри в prepared statements. https://code.tutsplus.com/tutorials/pdo … -net-24059
а, тут вище в темі...
я думав ви про приклад без препареда в мною наведених прикладах))
зрештою, препаред серед моїх прикладів також, і навіть різницю між ними одразу видно\
хех, особисто мене пдо відштовхує своїм ооп-говностилем (прошу пробачення якщо я ображаю чиюсь віру в релігію ооп -- я більше так не буду [і менше також ні ])
зрештою, якщо мені потрібно буде в php щось інше окрім php -- я просто буду використовувати відповідний драйвер, postgresql-драйвер в php також є (втім, з постгресом я працюю з ерланга/еліксира, в php мені вистачає mysql -- немає смислу на ведмедя йти із зубочисткою -- на відповідні задачі потрібно брати відповідні інструменти для вирішення [тут пригадуються даймони на php ])
можете навести приклад використання іменованих параметрів при використанні пдо?
(у чім їх зручність-корисність?)
думаю це буде цікаво не лише мені а й іншим форумчанам) дякую
Я хотів ще зауважити в "плюсах" (суб'єктивних) що PDO повністю OO але фактично це не є ані плюсом, ані мінусом (об'єктивно). В час коли більшість фреймворків PHP OO, не зовсім кошерно пхати туди процедуральний код (PS: mysqli теж має OO стиль, якщо що).
Приклад був у посиланні:
$params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600);
$pdo->prepare('
SELECT * FROM users
WHERE username = :username
AND email = :email
AND last_login > :last_login');
$pdo->execute($params);
Окрім того що воно виглядає краще і має набагато більше контексту ніж "?", не треба слідкувати за порядком параметрів як у випадку з "?", легше створювати такі запити динамічно.
Плюс у кросплатформенності PDO не у тому, що не треба шукати і обирати драйвер, а у тому що у випадку міграції з того ж mysql на postgresql або msssql, не треба буде змінювати код.