Portál AbcLinuxu, 25. leden 2020 22:10


www.AutoDoc.Cz

Dotaz: MYSQL PHP čeština a názvy databaze a tabulek

9.8.2019 14:30 hyp
MYSQL PHP čeština a názvy databaze a tabulek
Přečteno: 733×
Odpovědět | Admin
Prosím o pomoc. Neřešil někdo z php otevirání databáze, kde jsou blbě navrženy názvy tabulek. Je to z accessu, změnit to nemůžu.Např.

SELECT `KódAdresářovéPoložky` FROM `adresář` WHERE id=1

zkouším mysqli_fetch_array a mysqli_fetch_assoc a hlásí to

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given on line 95

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in

Pokud odstraním diakritiku z názvů, funguje vše OK, Pokud si query exportnu do prohlížeče a dám do phpmyadmina, funguje to bez problémů . Je mě jasný, že je to blbě navržený, ale počítám, že data budu exportovat a dávat na web k prohlížení, tak se mi nechce měnit celou výchozí dtb, která stále funguje. Díky

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.8.2019 14:51 NN
Rozbalit Rozbalit vše Re: MYSQL PHP čeština a názvy databaze a tabulek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak vypada cely skript,kod toho volani?
9.8.2019 15:33 Kit | skóre: 44 | Brno
Rozbalit Rozbalit vše Re: MYSQL PHP čeština a názvy databaze a tabulek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus tu databázi otevřít takhle a dej vědět zda tam ten parametr charset=utf8 pomohl. V opačném případě to vyhodí výjimku.
$options = [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_CASE => \PDO::CASE_NATURAL,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
];
$pdo = new \PDO("mysql:host=localhost;dbname=test;charset=utf8",'root','heslo', $options);
$sql = "SELECT `KódAdresářovéPoložky` FROM `adresář` WHERE id=1"
$result = $pdo->query($sql);
$data = $result->fetchAll();
var_dump($data);
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
xkucf03 avatar 9.8.2019 15:34 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: MYSQL PHP čeština a názvy databaze a tabulek
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tohle může být chyba v PHP resp. mysqli ovladači…

Co si v databázi vytvořit pohledy (view), které si pojmenuješ nějak lépe, a pak SELECTovat z nich?

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
9.8.2019 16:06 Hyp
Rozbalit Rozbalit vše Re: MYSQL PHP čeština a názvy databaze a tabulek
Odpovědět | | Sbalit | Link | Blokovat | Admin
OK, zkusím to jiné volání zítra a dám vědět. V současnosti to mám

$con2 = mysqli_connect(Config::DATABASE_SERVER2,Config::DATABASE_USER2,Config::DATABASE_PASSWORD2, Config::DATABASE_NAME2); if(!$con2){ die ("Nemůžu najít databázi klientů".mysqli_error()); }

Conection je OK
Řešení 1× (xkucf03)
9.8.2019 23:07 Kit | skóre: 44 | Brno
Rozbalit Rozbalit vše Re: MYSQL PHP čeština a názvy databaze a tabulek
Chybí tam dotaz
SET NAMES utf8
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
10.8.2019 07:01 Hyp
Rozbalit Rozbalit vše Re: MYSQL PHP čeština a názvy databaze a tabulek
OK, díky moc. To funguje, pokud to dám v phpmyadminu. Jde to ale nějak dát do dotazu nebo connection, abych toi pak, při přepsání nemusel řešit?Nebo vždy pouštět to setnames před voláním? Ještě jedou díky za pomoc
10.8.2019 12:52 Kit | skóre: 44 | Brno
Rozbalit Rozbalit vše Re: MYSQL PHP čeština a názvy databaze a tabulek
Mělo by to být vyřešeno v konfiguraci phpMyAdmin.

V connection jsem to již popsal, viz výše. Používám však už jen PDO, takže v MySQLi to může být jinak. Dlouho jsem to používal jako první dotaz po navázání spojení, než jsem přišel na to, že se to dá narvat do DSN.

Stačí ten dotaz poslat vždy po navázání spojení - pamatuje si to do chvíle ukončení.

Dá se to nastavit i na serveru mysqld, ale skripty pro něj vyvinuté by jinde nemusely fungovat správně. Připojení k DB stejně děláš jen v jednom bodě aplikace - může to vadit asi jen u prototypů.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
10.8.2019 16:09 Hyp
Rozbalit Rozbalit vše Re: MYSQL PHP čeština a názvy databaze a tabulek
Díky moc za pomoc a vyčerpávající odpovědi.
6.9.2019 12:11 Xerces
Rozbalit Rozbalit vše Re: MYSQL PHP čeština a názvy databaze a tabulek
A hlavně nezapomeň zastřelit toho člověka, který to takto vyrobil. :-D
6.9.2019 13:13 Kit | skóre: 44 | Brno
Rozbalit Rozbalit vše Re: MYSQL PHP čeština a názvy databaze a tabulek
Proč? V době, kdy vznikala databáze MySQL, byl Unicode v plekách a tak použili ISO Latin-1 jako default. Je v pořádku, že si při navázání spojení se serverem sjednám znakovou sadu, ve které budeme spolu komunikovat.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.