Veri tabanına veri eklerken yaşadığım gizemli ? sorunu.
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.
İ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>";
}