v2.5.2
Giriş yap

Veri tabanına veri eklerken yaşadığım gizemli ? sorunu.

parzemisis
689 defa görüntülendi

Merhaba benim PDO ile mysql e veri yüklemek için kullandığım kodlar.

$link = mysqli_connect("localhost", "root", "", "test10");
    $link->query("SET CHARACTER SET utf8");
    $sql = "INSERT INTO yemekler (img_url, product_name, detail, price) VALUES ('" . $image["image" . $i] . "', '" . $ad["ad" . $i] . "', '" . $acıklama["acıklama" . $i] . "', '" . $fiyat["fiyat" . $i] . "')";
    if (mysqli_query($link, $sql)) {
        echo "menü oluşturuldu.<br>";
    }
    mysqli_close($link);

Bunlara ek olarak veri tabanın karakter seti utf-8_tukish_ci ben.

qwertyuıopğü

Harflerinden oluşan bir veri yüklediğim zaman görmeyi beklediğim sonuç.

qwertyuıopğü

Ama benim aldığım sonuç ise.

qwertyu?op?ü

Bana herşey tamam gibi göründüğü için sorunun ne olduğunu anlayamıyorum.

tayfunerbilen
1469 gün önce

İlk olarak karakter tanımı için utf8mb4_general_ci olarak ayarla. Böylece türkçe karakter problemi vs. çekmezsin.
İkinci olarak, mysqli ile başlayıp pdo ile devam edip, mysqli ile sonlandırmışsın :D Kafan biraz karışmış orada, aşağıdaki kodu deneyebilirsin.

try {
    $db = new PDO('mysql:host=localhost;dbname=test10;charset=utf8mb4', 'root', '');
} catch(PDOException $e){
    die($e->getMessage());
}

$query = $db->prepare('INSERT INTO yemekler SET img_url = :url, product_name = :name, detail = :detail, price = :price');
$query->execute([
    'url' => $image["image" . $i],
    'name' => $ad["ad" . $i],
    'detail' => $acıklama["acıklama" . $i],
    'price' => $fiyat["fiyat" . $i]
]);
if ($query->rowCount()){
     echo "menü oluşturuldu.<br>";
}