Здравствуйте, мастера. Переписываю старый скрипт с уязвимостями. Раньше я выбирал данные с бд так: PHP: $id = intval($_GET['id']); $query = $db->query("SELECT * FROM `orders` WHERE id = $id); while($row = $query->fetch_assoc()) { echo $row['name'].'<br>'; } Писал для себя, потому не задумывался о sql-инъекциях. Но вот вдруг решил, что везде нужно писать правильно. Потому переписываю все на подготовленные выражения (я вообще перешел на PDO, оно мне кажется поудобнее, но тут я орудовал mysqli) Так вот, я переписывал, INSERT-ы, всё хорошо, удобно. А вот с SELECT-ом беда. Не пойму, как писать, чтобы было удобно и правильно. Вот моё временное решение, которое работает, но это жутко неудобно. PHP: $order = $db->prepare("SELECT * FROM `orders` WHERE `link` = ?"); $order->bind_param('s', $_SESSION['zakaz']); $order->execute(); $order->bind_result($row['id'], $row['name'], $row['email'], $row['description'], $row['contacts'], $row['date'], $row['order_name'], $row['status'], $row['link'], $row['password']); $order->fetch(); //да, мне было не лень назвать их все своими именами вручную :D:D И уже потом вывожу в их так: $row['id'] и тд. И ещё, не пойму, как извлекать много строк с бд. В цикле не получилось сделать таким способом. Буду благодарен за ответы
Обертка для работы с базой, т.е. класс который описывает работу с базой, к примеру: PHP: class DB{ private $dbConnect; public function __constuct(){ $this->dbConnect = new PDO(....); } public function selectQuery(String $sql, Array $param=null){ $query = $this->dbConnect->prepare($sql); foreach($param as $paramName=>$paramValue) $query->bindParam($paramName,$paramValue); } return $query->fetch(); } ... } $db = new DB(); $row = $db->selectQuery("SELECT * FROM orders WHERE link=?", ["s"=>$_SESSION["zakaz"]); Это позволит тебе также изменять без особых затрат драйвер для базы данных.