PHP PDO ukládání dat do SQL s diakritikou

Dilinkooo

PHP PDO ukládání dat do SQL s diakritikou
« kdy: 14. 04. 2016, 11:59:13 »
Dobry den.
Snazim sa ukladat data do sql skrz PHP. Nieako takto
Kód: [Vybrat]
if($check->rowCount()==0){
   $sql=$dbh->prepare("INSERT INTO `search` (`title`, `url`, `description`) VALUES (?, ?, ?)");
   $sql->execute(array(
    $t,
    $u,
    $d
   ));
  }else{
   $sql=$dbh->prepare("UPDATE `search` SET `description` = ?, `title` = ? WHERE `url`=?");
   $sql->execute(array(
    $d,
    $t,
    $u
   ));

V db.php mam toto

Kód: [Vybrat]
$dbh  = new PDO('mysql:dbname='.$db.';host='.$host.';port='.$port, $user, $pass);
 $dbh->exec("set names utf8");

Bohuzial mi to stale uklada stale bez diaktitiky takto
Kód: [Vybrat]
Rýchle a dôveryhodné správy zo Slovenska, sveta i Vášho regiónu.
Kde je chyba ?
Dakujem
« Poslední změna: 14. 04. 2016, 12:35:35 od Petr Krčmář »


wardmaster

Re:PHP PDO ukladanie dat do SQL s diakritikov.
« Odpověď #1 kdy: 14. 04. 2016, 12:17:23 »
viděl bych to na chybu v kódování
máš správně nastavené kódování v databázi, komunikaci PHP-databáze a zdroje dat?

Kit

Re:PHP PDO ukladanie dat do SQL s diakritikov.
« Odpověď #2 kdy: 14. 04. 2016, 12:41:41 »
Nejspíš jsi chybně založil tabulku s implicitním kódováním Latin1 a teď do ní láduješ data v UTF-8. Je nutné tu tabulku založit znovu se správným kódováním tabulky nebo konkrétních sloupců.

BTW: Ten tvůj příklad se dá zkrátit tak, že vypustíš i SELECT, který jsi zde neuvedl, a to celé nahradíš tímto:
Kód: [Vybrat]
$sql=$dbh->prepare("REPLACE `search` SET `title` = ?, `url`=?, `description` = ?");
$sql->execute(array($title, $url, $description));

Re:PHP PDO ukládání dat do SQL s diakritikou
« Odpověď #3 kdy: 14. 04. 2016, 18:15:58 »
bacha na psani pod widlema, pouzivaji cp1250 a nekdy to dela problemy.
Děkuji za možnost editace příspěvku.