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
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

$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
Rýchle a dôveryhodné správy zo Slovenska, sveta i Vášho regiónu.

Kde je chyba ?
Dakujem


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:
$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.