C Veri Ekleme Parametre Kullanma

C’de Parametre Kullanarak Veri Ekleme

C programlama dilinde, veritabanlarına veri eklemek için parametre kullanmak, SQL enjeksiyon saldırılarını önlemenin ve kodun okunabilirliğini ve bakımını iyileştirmenin önemli bir yoludur. Bu makale, C’de parametre kullanarak veri eklemeyi ayrıntılı olarak açıklayacaktır.

Parametre Kullanmanın Faydaları

Parametre kullanmanın veri ekleme işlemleri için aşağıdaki faydaları vardır:

  • SQL Enjeksiyon Saldırılarını Önler: Parametreler, kullanıcı tarafından sağlanan verileri sorguya güvenli bir şekilde ekler ve SQL enjeksiyon saldırılarını önler.
  • Okunabilirliği ve Bakımı İyileştirir: Parametreler, sorguları daha okunabilir ve anlaşılır hale getirir, bu da kodun bakımını kolaylaştırır.
  • Performansı Artırır: Parametreler, veritabanı sunucusunun sorguyu daha verimli bir şekilde işlemesine olanak tanır, bu da performansı artırır.

Parametre Kullanarak Veri Ekleme

C’de parametre kullanarak veri eklemek için aşağıdaki adımları izleyin:

  1. Veritabanı Bağlantısı Oluşturun: Veritabanına bağlanmak için mysql_connect() veya mysqli_connect() fonksiyonlarını kullanın.
  2. Hazırlanmış Bir İfade Oluşturun: Parametreli bir sorguyu temsil eden bir hazırlanmış ifade oluşturmak için mysql_prepare() veya mysqli_prepare() fonksiyonlarını kullanın.
  3. Parametreleri Bağlayın: Hazırlanmış ifadeye parametreleri bağlamak için mysql_stmt_bind_param() veya mysqli_stmt_bind_param() fonksiyonlarını kullanın.
  4. Hazırlanmış İfadeyi Yürütün: Hazırlanmış ifadeyi yürütmek için mysql_stmt_execute() veya mysqli_stmt_execute() fonksiyonlarını kullanın.
  5. Veritabanı Bağlantısını Kapatın: Veritabanı bağlantısını kapatmak için mysql_close() veya mysqli_close() fonksiyonlarını kullanın.

Örnek Kod

Aşağıdaki C kodu, parametre kullanarak bir veritabanına veri eklemeyi göstermektedir:

“`c

include

include

include

int main() {
// Veritabanı bağlantısı bilgileri
const char hostname = “localhost”;
const char
username = “root”;
const char password = “”;
const char
database = “test”;

// Veritabanına bağlan
MYSQL *conn = mysql_init(NULL);
if (!mysql_real_connect(conn, hostname, username, password, database, 0, NULL, 0)) {
fprintf(stderr, “Veritabanına bağlanılamadı: %s\n”, mysql_error(conn));
mysql_close(conn);
return EXIT_FAILURE;
}

// Hazırlanmış ifade oluştur
const char query = “INSERT INTO kullanicilar (ad, soyad, email) VALUES (?, ?, ?)”;
MYSQL_STMT
stmt = mysql_stmt_init(conn);
if (!mysql_stmt_prepare(stmt, query, strlen(query))) {
fprintf(stderr, “Hazırlanmış ifade oluşturulamadı: %s\n”, mysql_stmt_error(stmt));
mysql_stmt_close(stmt);
mysql_close(conn);
return EXIT_FAILURE;
}

// Parametreleri bağla
MYSQL_BIND bind[3];
memset(bind, 0, sizeof(bind));

bind[0].buffer_type = MYSQL_TYPE_STRING;
bind[0].buffer = “John”;
bind[0].buffer_length = strlen(“John”);

bind[1].buffer_type = MYSQL_TYPE_STRING;
bind[1].buffer = “Doe”;
bind[1].buffer_length = strlen(“Doe”);

bind[2].buffer_type = MYSQL_TYPE_STRING;
bind[2].buffer = “[email protected]”;
bind[2].buffer_length = strlen(“[email protected]”);

if (mysql_stmt_bind_param(stmt, bind)) {
fprintf(stderr, “Parametreler bağlanamadı: %s\n”, mysql_stmt_error(stmt));
mysql_stmt_close(stmt);
mysql_close(conn);
return EXIT_FAILURE;
}

// Hazırlanmış ifadeyi yürüt
if (mysql_stmt_execute(stmt)) {
fprintf(stderr, “Hazırlanmış ifade yürütülemedi: %s\n”, mysql_stmt_error(stmt));
mysql_stmt_close(stmt);
mysql_close(conn);
return EXIT_FAILURE;
}

// Veritabanı bağlantısını kapat
mysql_stmt_close(stmt);
mysql_close(conn);

return EXIT_SUCCESS;
}
“`

İlgili Kaynaklar


Yayımlandı

kategorisi