Diskuze: MySQL - vkládání záznamu do tabulky
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 14 zpráv z 14.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Však si nechej vypsat chybové hlášení, z toho to většinou bývá patrné.
Chybějící středník za SQL dotazem by dnes už neměl vadit, ale v minulosti to bývalo zdrojem podobných potíží.
Také je dobré jako první SQL dotaz napsat
SET NAMES UTF8;
Záleží však na použitém kódování.
Sice tento zastaralý ovladač MySQL už nepoužívám, ale v návodech jsem vyhrabal, že je nutné místo testu návratové hodnoty otestovat výsledek mysql_errno(). Asi takto:
$result = mysql_query("SQL dotaz;", $spojeni);
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error() . "\n";
}
A ještě něco: Nikdy nepoužívej funkci die(). Tato funkce se používá pouze v učebnicích.
V tom případě vidím chybu v definované znakové sadě. Implicitně je v MySQL přednastavena tuším norská - pro nás nepoužitelná.
Nemusí mít tabulka náhodou primární klíč, aby se do ní dalo něco vložit? Jinak by stálo za pokus ladit dotazy přímo v administrační konzoli (tedy v PHPMyAdminovi nebo něčem takovém) než v PHP, konzole ti tu chybu na sto procent napíše. My také nejprve ladíme v konzoli a až poté píšeme výsledek do PHP, ušetříš si tím mnoho problémů.
Primární klíč je potřebný až od 2NF. V MySQL se dá bez problémů používat i 0NF, tedy bez primárního klíče.
Administrační konzole je fajn. Určitě je lepší, než phpMyAdmin. Dá se v ní udělat úplně cokoli, co MySQL umí.
Jinak jsem se spletl, defaultní znaková sada je švédská. Je nutné ji změnit, jinak nepůjdou vkládat řetězce s českými znaky.
Hmm právě že jsem to dělal v jednom programu pro práci s databází (sem
jsem to přepsal do php podoby) a ten program to vždy po... Teď jsem to
udělal v php a PHPMyAdminovi = > tam to všechno jde... Takže to byl ten
debilní program! (ztrávil jsem nad tím celý den ). Ale mohu mít ještě jednu
otázku? Ta už nejspíše bude mojí vinou...
Pokud vyberu záznam:
$jmeno_s_dk = mysql_query("select name_s_dk from names_kategories where name_bez_dk='zaba'",$spojeni);
A následně ho vypíšu (echem), tak se mi záznam vypíše v podobě "resource id#13" , druhý záznam pak "resource id#14". V čem dělám chybu...
Záznamy musíš fatchovat, nejsou z té databáze v takové podobě, abys s nimi mohl hned pracovat - viz PHP tutoriály.
Takže to byla ta nevhodná znaková sada.
Proto místo proměnných se zavádějícím názvem $jmeno_s_dk používám vždy název $result. Je to totiž jen výsledek dotazu, který však neobsahuje data. Ta získáš až funkcí
$row = mysql_fetch_assoc($result);
kterou pro více řádek musíš volat v cyklu.
V novějších ovladačích MySQL je možné celý výsledek stáhnout naráz.
V tom programu jsem právě měl nastavené kódování utf8 czech jako
všude jinde takže tím to asi nebylo, je mi to záhadou... Ale jinak vám
děkuji za pomoc, ušetřili jste mě několikahodinovému "trápení"
Ale to o nastavení kódování jsi tady nenapsal a ani z toho uvedeného zdrojáku to není patrné.
A my abychom věštili z křišťálové koule.
Zobrazeno 14 zpráv z 14.