Hatanın sebebi, `bind_param()` fonksiyonunda tür tanımı (type definition string) ve bağlanan değişkenlerin sayısının uyuşmamasıdır. Kısaca, `bind_param` fonksiyonuyla belirtilen tür tanımı dizgesi (örneğin, 'sssisiissssssssssss') ve sağlanan değişkenlerin sayısının eşleşmesi gerekiyor.
Kodsatırınızda, tür tanımı dizgesinde 20 tane karakter ve değişken var, fakat iki fazladan 's' var.
```php
$stmt = $conn->prepare("INSERT INTO xucp_whitelist (ucpname, charname, charstory, age, dogumyeri, tenrengi, cinsiyet, sifre, frage1, frage2, frage3, frage4, frage5, frage6, frage7, frage8, frage9, frage10, frage11, frage12) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssisiissssssssssss", $ucpname, $charname, $charstory, $age, $dogumyeri, $tenrengi, $cinsiyet, $sifre, $frage1, $frage2, $frage3, $frage4, $frage5, $frage6, $frage7, $frage8, $frage9, $frage10, $frage11, $frage12);
```
Belirttiğiniz kısımdaki "sssisiissssssssssss" tür tanımı dizgesinde 20 karakter var. Ancak şu şeklide olmalı:
- 3 tane `s` (string)
- 1 tane `i` (integer)
- 1 tane `s` (string)
- 1 tane `i` (integer)
- 1 tane `i` (integer)
- 1 tane `s` (string)
- 12 tane `s` (string)
Bu durumda dizgeniz şu hale gelmeli: "sssisiissssssssss" (18 karakter toplam).
Bu durumda doğru kod şu olacaktır:
```php
$stmt = $conn->prepare("INSERT INTO xucp_whitelist (ucpname, charname, charstory, age, dogumyeri, tenrengi, cinsiyet, sifre, frage1, frage2, frage3, frage4, frage5, frage6, frage7, frage8, frage9, frage10, frage11, frage12) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssisiissssssssssss", $ucpname, $charname, $charstory, $age, $dogumyeri, $tenrengi, $cinsiyet, $sifre, $frage1, $frage2, $frage3, $frage4, $frage5, $frage6, $frage7, $frage8, $frage9, $frage10, $frage11, $frage12);
```
Ancak, hata mesajından kaynaklanan uyumsuzluğu çözmek için, doğru parametre dizgisini ve parametre sayılarını kontrol ettiğinizden emin olun. İlave olarak veritabanı bağlantısı (`$conn`) ve `$_POST` verilerinin mevcut olduğundan emin olun.
Bu kodu çalıştırdığınızda hata almamanız gerekir:
```php
$ucpname = $_POST['ucpname'];
$charname = $_POST['charname'];
$charstory = $_POST['charstory'];
$age = (int) $_POST['age']; // age as integer
$dogumyeri = $_POST['dogumyeri'];
$tenrengi = (int) $_POST['tenrengi'];
$cinsiyet = (int) $_POST['cinsiyet'];
$sifre = $_POST['sifre'];
$frage1 = $_POST['frage1'];
$frage2 = $_POST['frage2'];
$frage3 = $_POST['frage3'];
$frage4 = $_POST['frage4'];
$frage5 = $_POST['frage5'];
$frage6 = $_POST['frage6'];
$frage7 = $_POST['frage7'];
$frage8 = $_POST['frage8'];
$frage9 = $_POST['frage9'];
$frage10 = $_POST['frage10'];
$frage11 = $_POST['frage11'];
$frage12 = $_POST['frage12'];
$stmt = $conn->prepare("INSERT INTO xucp_whitelist (ucpname, charname, charstory, age, dogumyeri, tenrengi, cinsiyet, sifre, frage1, frage2, frage3, frage4, frage5, frage6, frage7, frage8, frage9, frage10, frage11, frage12) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssisiissssssssssss", $ucpname, $charname, $charstory, $age, $dogumyeri, $tenrengi, $cinsiyet, $sifre, $frage1, $frage2, $frage3, $frage4, $frage5, $frage6, $frage7, $frage8, $frage9, $frage10, $frage11, $frage12);
// Execute statement
$stmt->execute();
$stmt->close();
```
Bu kod, verileri `xucp_whitelist` tablosuna başarıyla ekleyecektir.