NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 2 - První databázová tabulka a MySQL ovladače v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Zdeněk Jurák:16.9.2024 21:13

Ahoj, potřeboval bych aby mi proměnná fungovala i jako určení sloupce:

$id = '1';//$_POST['cond'];
$what = 'alias';//$_POST['what'];
$value = 'lachtan';//$_POST['val'];

Db::connect($server,$db,$db_user,$db_pass);
$update = Db::query('
    UPDATE url
    SET ? = ?
    WHERE id = ?
', $what, $value, $id);

Konkrétně část:
SET ? = ?

vrací mi to chybu:

Fatal error: Uncaught Error: Call to a member function execute() on bool in /web/htdocs1/webname/home/www/url/Db.php:62 Stack trace: #0 /web/htdocs1/webname/home/www/url/Db.php(72): Db::executeStatement(Array) #1 /web/htdocs1/webname/home/www/url/update.php(10): Db::query('\n UPDATE url...', 'alias', 'lachtan', '1') #2 {main} thrown in /web/htdocs1/webname/home/www/url/Db.php on line 62

Můžete mi prosím poradit jak toho docílit za použití toho wraperu Db.php?

Pokud tu čás kódu upravím a manuálně místo prvního otazníku tapíšu název sloupce, tak to funguje -

alias = ?
 
Odpovědět
16.9.2024 21:13
Avatar
Odpovídá na Zdeněk Jurák
Zdeněk Jurák:16.9.2024 21:39

Vyřešeno:

Db::connect($server,$db,$db_user,$db_pass);
$update = Db::query('
    UPDATE url
    SET '.$what.' = ?
    WHERE id = ?
', $value, $id);
 
Odpovědět
16.9.2024 21:39
Avatar
Jakub Volný
Člen
Avatar
Jakub Volný:23.11.2024 12:59

Dobrý den, potřeboval by jsem pomoct. Udělal jsem všechno stejně podle IT networku a když spustím svůj php program

// Načtení wrapperu
require_once('Db­.php');
Db::connect('127­.0.0.1', 'databaze_pro_web', 'root', '');
Db::query('
INSERT INTO uzivatele (jmeno, prijmeni, datum_narozeni, pocet_clanku)
VALUES ("Jan", "Novák", "1984-11-03", 17)
');
echo('OK');

tak mi to vyhodí tuto chybu:

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) in C:\xampp\htdoc­s\skola\databa­ze\Db.php:55 Stack trace: #0 C:\xampp\htdoc­s\skola\databa­ze\Db.php(55): PDO->__construct('mys­ql:host=127..­..', 'root', Object(Sensiti­veParameterVa­lue), Array) #1 C:\xampp\htdoc­s\skola\databa­ze\index.php(3): Db::connect('127­.0.0.1', 'databaze_pro_we­...', 'root', '') #2 {main} thrown in C:\xampp\htdoc­s\skola\databa­ze\Db.php on line 55

Poprosil bych poradit proč mi to háže tuhle chybu díky.

 
Odpovědět
23.11.2024 12:59
Avatar
sahlepik
Člen
Avatar
sahlepik:13. února 9:14

Mám takový začátečnický dotaz. Když přímo v phpMyAdmin vytvářím databázovou tabulku, je tam ještě sloupec "porovnávání" a u textových řetězců mám vybrat kódování. Předpokládám, že když mám HTML dokument v UTF-8 a také soubor s PHP skripty nastaven jako "UTF-8 no BOM" (pracuju v PSPadu), mám vybrat kódování "utf8mb4_czech_ci"? Těch UTF kódování je tam několik a nevím, které je to správné. Databázi jsem vytvořil s kódováním "utf8mb4_czech_ci". Jde mi o to, že když načtu text z databáze a budu jej zpracovávat PHP skriptem, aby se správně interpretovaly a zobrzovaly české znaky s diakritikou.

Pro upřesnění:
Apache/2.4.59 (Win64) PHP/8.3.6 mod_fcgid/2.3.10-dev
Verze databázového klienta: libmysql - mysqlnd 8.3.6
phpMyAdmin verze 5.2.1

Editováno 13. února 9:15
 
Odpovědět
13. února 9:14
Avatar
Jan Poláček
Tvůrce
Avatar
Odpovídá na sahlepik
Jan Poláček:13. února 18:25

Ahoj,

PHP scripty mám nastavené stejně, tedy UTF8 bez BOM, co se týče databáze, tak hlavní rozdíly mezi utf8mb3 a utf8mb4 je, že mb4 obsahuje více znaků, jako např. emotikony (základní znaky, jako i české znaky obsahují obě kódování), také je rozdíl, že mb3 si vezme na znak až 3 bajty, mb4 si vezme až 4 bajty na znak a to je přesně důvod, proč si může mb4 dovolit více znaků, může se to tedy projevit na velikosti databáze. Doufám, že to pomůže.
Jinak phpMyAdmin je určitě fajn, ale např. já např. upřednostňuju Adminer
Je to český projekt a je to pouze jeden PHP soubor a jede pro mé účely parádně.

Odpovědět
13. února 18:25
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 145.