Выполнить безопасный запрос с помощью PDO

196
19 июня 2017, 22:05

// Как выполнить данный запрос максимально безопасно и просто с помощью PDO

$var="";
$var1=0;
if(isset($_GET['priceFrom'])){
$var = " `pris` > ". $_GET['priceFrom'];
$var1=1;
}
if(isset($_GET['priceUpTo'])){
if($var1==1){
$var1 = $var1 . " AND `pris` < " .  $_GET['priceUpTo'];
}else{
$var = " `pris` > ". $_GET['priceUpTo'];
}
mysql_query("SELECT * FROM object WHERE $var ");
Answer 1

PDO::prepare — Подготавливает запрос к выполнению и возвращает ассоциированный с этим запросом объект

http://php.net/manual/ru/pdo.prepare.php

Answer 2

// подключился с базе данных с помощью $pdo

$var='';
$var1=0;
if(isset($_GET['priceFrom'])){
$var = " pris > ". $_GET['priceFrom'];
$var1=1;
}
if(isset($_GET['priceUpTo'])){
if($var1==1){
$var1 = $var1 . " AND pris < " .  $_GET['priceUpTo'];
}else{
$var = " pris > ". $_GET['priceUpTo'];
}
}
$priceFrom = ($_GET['priceFrom']);
$priceUpTo = ($_GET['priceUpTo']);
$sql = $pdo->prepare("SELECT * FROM object WHERE " . $var);
$sql->execute(array($priceFrom, $priceUpTo));
var_dump($sql->fetch());
Answer 3

Надо использовать PDO и забиндить параметры, например так

$st = $pdo->prepare('SELECT * FROM `object` WHERE pris > :pris');
$st->bindParam(':pris', $_GET['priceUpTo']);
$st->execute();

Если ожидается цифровой параметр то можно сделать до запроса $_GET['priceUpTo'] = intval($_GET['priceUpTo']);

READ ALSO
Ошибка с PHPMailer

Ошибка с PHPMailer

ЗдравствуйтеПроблема такая: отправляю письма в html формате c помощью phpmailer, а мне на экран выводится кучу разное информации об отправлении,...

222
api rest яндекс диск создать папку

api rest яндекс диск создать папку

пытаюсь создать паку на диске в результате получаю такую ошибку помогите исправить {"message":"Метод не поддерживается","description":"Method Not Allowed","error":"MethodNotAllowedError"}...

428
Переход на страницу по id

Переход на страницу по id

При нажатии на кнопку поста выдает ошибку 404Как должен выглядеть маршрут к посту

231