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);
_____________
..Работает - не трогай!