# sql.QueryTyped

- **Ortam:** İstemci, Sunucu, Menü
- **İngilizce aslı:** https://wiki.facepunch.com/gmod/sql.QueryTyped
- **Çeviri tarihi:** 2025-09-08

```lua
table veya boolean sql.QueryTyped( string query, ... )
```

## Yakın Zamanda Eklendi

Bu özellik (2025.05.29) sürümünde yeni eklendi. Şu an için yalnızca [Dev Branch](https://gmod.tr/wiki/Dev_Branch) üzerinde mevcut olabilir.

## Açıklama

Yerel SQLite veritabanında doğru tür yönetimi ve parametre bağlama ile bir sorgu gerçekleştirir, sonuç kümesi olarak bir tablo, sonuç yoksa boş bir tablo ve hata durumunda false döndürür. [sql.Query](https://gmod.tr/wiki/sql.Query)'nin aksine, bu fonksiyon SQLite veri türlerini doğru bir şekilde yönetir ve SQL enjeksiyon saldırılarını önlemek için güvenli parametre bağlamaya olanak tanır.

> **UYARI:** - Bu fonksiyon, noktalı virgülle ayrılmış birden fazla ifade yürütebilen [sql.Query](https://gmod.tr/wiki/sql.Query)'nin aksine, yalnızca tek bir SQL ifadesi yürütür.
> - Büyük INTEGER değerleri (±9,007,199,254,740,991'i aşan) tam değerleri korumak için string olarak döndürülür. Bunun nedeni, Lua'nın tüm sayıları double olarak temsil etmesi ve 2⁵³-1'den büyük tamsayılar için hassasiyet kaybetmesidir. Bunları string olarak döndürmek, yuvarlama hatalarından kaynaklanan veri bozulmasını önler.

## Argümanlar

1. [string](https://gmod.tr/wiki/string) **query**: İsteğe bağlı `?` parametre yer tutucuları ile yürütülecek sorgu. > **UYARI:** - SQL enjeksiyonu zafiyetlerini önlemek için string birleştirme yerine daima `?` yer tutucuları ile parametre bağlama kullanın.
2. [vararg](https://gmod.tr/wiki/vararg) **queryParams**: Sorgu yer tutucularına bağlanacak parametreler. [nil](https://gmod.tr/wiki/nil), [boolean](https://gmod.tr/wiki/boolean), [number](https://gmod.tr/wiki/number) ve [string](https://gmod.tr/wiki/string) türlerini destekler. Sorgu parametrelerinin sayısı `?` yer tutucularının sayısıyla eşleşmelidir, aksi takdirde sorgu başarısız olur. Örneklere bakın.

## Döndürülen Değerler

1. [table](https://gmod.tr/wiki/table) veya [boolean](https://gmod.tr/wiki/boolean): Bir hata varsa `false` döndürülür ([sql.LastError](https://gmod.tr/wiki/sql.LastError)'a bakın), aksi takdirde doğru şekilde yazılmış sütun değerlerine sahip bir tablo (sonuç yoksa boş tablo) döndürülür.

### Örnek

Tüm SQLite veri türleri için parametre bağlamalı, tür belirtilmiş sorguları gösteren doğrudan kullanım örnekleri.

```lua
-- Tüm SQLite veri türlerini içeren bir tablo oluştur
sql.Query([[CREATE TABLE IF NOT EXISTS test_table (
	id INTEGER PRIMARY KEY,
	big_number BIGINT,
	small_number INTEGER,
	decimal_value DOUBLE,
	float_value REAL,
	is_enabled BOOLEAN,
	has_feature BOOL,
	user_name TEXT,
	binary_data BLOB,
	nill TEXT
)]])

-- Doğrudan parametre bağlama ile veri ekle
sql.QueryTyped([[INSERT INTO test_table (
	big_number, small_number, decimal_value, float_value,
	is_enabled, has_feature, user_name, binary_data, nill
) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ? )]],
	"76561198261855442", -- string olarak BIGINT (büyük Steam ID)
	12345,               -- INTEGER
	999.99,              -- DOUBLE
	3.14159,             -- REAL
	true,                -- BOOLEAN (1 olarak saklanır)
	false,               -- BOOL (0 olarak saklanır)
	"Player Name",       -- TEXT
	"binary\0data\0here",-- BLOB (null bayt içeren ikili string)
	nil                   -- NULL OLABİLEN TEXT
)

-- Parametre bağlama ile sorgulama
local results = sql.QueryTyped("SELECT * FROM test_table WHERE big_number = ?", "76561198261855442")
PrintTable(results)
```

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/sql.QueryTyped
