merhaba arkadaşlar bir site kodluyorum şu anda sql açığı varmı diye kontrol edeyim dedim ama pdo ile kodlamama rağmen sql açığı var ve sql açığı üzerinden bypass yapabiliyorum

aceba kodlardamı hata var yardımcı olabilecek arkadaşlar yardımcı olursa sevinirim
çözemedim bir türlü


Veritabanı Bağlantı Kodları
@ob_start();
@session_start();


$host = "localhost";
$dbname = "gokkusagi";
$kadi = "root";
$sifre = "";

try{

$nurullahdilsiz = new PDO("mysql:host=$host;dbname=$dbname",$kadi,$sifre,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$nurullahdilsiz->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo $e->getMessage();
}




Gelen Veriyi Çekme


$categoripageid = htmlspecialchars(strip_tags($_GET["id"]));
$pagetag = $nurullahdilsiz->prepare("SELECT * FROM product_category WHERE category_seo='$categoripageid'");
$pagetag->execute();
$pagetaglist = $pagetag->fetch(PDO::FETCH_ASSOC);
$kategoriidcekkk = $pagetaglist["id"];



fakat tek tırnak atınca veya çift tırnak urlye şu hatayı alıyorum

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''metal-tablo''' at line 1' in C:\xampp\htdocs\is\gokkusagi\6\product-list.php:26 Stack trace: #0 C:\xampp\htdocs\is\gokkusagi\6\product-list.php(26): PDOStatement->execute() #1 {main} thrown in C:\xampp\htdocs\is\gokkusagi\6\product-list.php on line 26