Autor | Zpráva | ||
---|---|---|---|
quickspider Profil |
#1 · Zasláno: 1. 12. 2020, 19:35:14
Dobrý den,
mohli byste mi, prosím, proradit. Snažím se už několik hodin přepsad kód stránek do php 7 a nedaří se mi načítání dát z databáze. V databázi dotaz funguje, ale v kódu se neprovede. <?php /*hlavička*/ $title = 'Kobra » Informace » 2020'; include('hlavicka.php'); echo '<h1 id="nahoru">Informace » 2020</h1> </div><div class="obal">'; /*menu*/ include('menu.php'); //obsahy echo '<div class="obsah2"> <h2>Aktualizace webu</h2>'; $pripojeni=mysqli_connect('localhost', 'jmeno' , 'heslo') or die('Bohužel se nepodařílo připojit k serveru s databázi.<br>Zkuste to prosím později nebo kontaktujte správce na <a href="mailto:admin@?subject=chyba na webu">admin@</a>.<br>Děkuji.<br>'); // adresa, uživatel, heslo $novinky=Array(1=>"kobra", "web"); $vysledek = mysqli_query($pripojeni, 'select date_format(datum, "%d. %m. %Y") datum_f, k11, web from news where date_format(datum, "%Y")=2020 order by datum desc'); //Připojení do DB serveru if(!$vysledek){ echo "<br><b>chyba dotazu 1</b><br>"; } while ($zaznam = mysqli_fetch_array($vysledek)) { /* Cyklem procházím řádky výsledku a vytahuju z něj hodnoty do nového pole $zaznam*/ echo '<div class="informace"><span>'.$zaznam["datum_f"]."</span><br></div>"; if ($zaznam["k11"]) { echo '<b>'.($novinky [1]).': </b>'.$zaznam["k11"]."<br>"; } if ($zaznam["web"]) { echo '<b>'.($novinky [2]).': </b>'.$zaznam["web"]."<br>"; } echo '<div class="nahoru"><a href="#nahoru">nahoru ^</a></div>'; } chyba dotazu 1 Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in D:\programy\xampp\htdocs\kobra\index.php on line 18 Také se mi nedaří odkazovat na samostatný soubor s údaji o připojení a musí to být napsáno na začátku stránky. Děkuji Vám za pomoc |
||
lionel messi Profil |
#2 · Zasláno: 1. 12. 2020, 21:24:03
quickspider:
„Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in D:\programy\xampp\htdocs\kobra\index.php on line 18“ Pridaj mysqli_connect 4. parameter - názov databázy. „Také se mi nedaří odkazovat na samostatný soubor s údaji o připojení a musí to být napsáno na začátku stránky.“ Ako naň odkazuješ? Na 99,99% bude chyba v ceste. |
||
quickspider Profil |
lionel messi:
Aha, díky moc. Dříve fungovalo include('pripojeni.php'); pripojeni_db(); |
||
lionel messi Profil |
quickspider:
1. Čo vráti: var_dump(is_file('pripojeni.php')); na vylúčenie problému s cestou? 2. Ak false, rieš cestu, ak true, čo presne je obsahom funkcie pripojeni_db(); ?
3. Ak aj vo funkcii pripojeni_db voláš mysqli_connect() s 3 parametrami, je problém jasný. |
||
quickspider Profil |
#5 · Zasláno: 2. 12. 2020, 22:15:57
lionel messi:
ad 1: true ad 3: doplnil jsem tam 4 parametr a když smažu řádek s mysqli_connect z index.php tak mi pak píše, že mám definovat proměnnou připojení :
bool(true) Notice: Undefined variable: pripojeni function pripojeni_db() {// pripojeni k serveru s db $pripojeni=mysqli_connect('localhost', '' , '', '') or die('Bohužel se nepodařílo připojit k serveru s databázi.<br>Zkuste to prosím později nebo kontaktujte správce na <a href="mailto:admin@?subject=chyba na webu">admin@</a>.<br>Děkuji.<br>'); // adresa, uživatel, heslo mysqli_set_charset($pripojeni,"utf8"); if(!mysqli_select_db($pripojeni, ''))// výběr DB { echo 'Bohužel se nepodařílo připojit k databázi.<br>Zkuste to prosím později nebo kontaktujte správce na <a href="mailto:admin@?subject=chyba na webu">admin@</a>.<br>Děkuji.<br>'; } } |
||
lionel messi Profil |
#6 · Zasláno: 3. 12. 2020, 08:29:20
quickspider:
„doplnil jsem tam 4 parametr a když smažu řádek s mysqli_connect z index.php tak mi pak píše, že mám definovat proměnnou připojení :“
www.pehapko.cz/zakladni-kurz/14-rozsah-platnosti Vo funkcii nastav $pripojeni ako návratovú hodnotu a potom ju v stránke, kde pripojeni.php includuješ, zavolaj $pripojeni = pripojeni_db();
|
||
quickspider Profil |
lionel messi:
super, už to jde. Dá se do sql dotazu vložit proměnná (2019). Př.: 'select date_format(datum, "%d. %m. %Y") datum_f, text from news where date_format(datum, "%Y")=2019 order by datum desc'
|
||
lionel messi Profil |
#8 · Zasláno: 3. 12. 2020, 16:07:54
quickspider:
„Dá se do sgl dotazu vložit proměnná“ Niekedy je rýchlejšie si veci rovno vyskúšať. Odpoviem aspoň nepriamo: Z hľadiska PHP (a tvojej otázky) je SQL dotaz iba obyčajný reťazec ako každý iný. |
||
quickspider Profil |
#9 · Zasláno: 3. 12. 2020, 21:18:57
lionel messi:
Díky moc za pomoc. Už to funguje, zřejmě jsem tam zapomněl při pokusech zapsat tečky. |
||
lionel messi Profil |
#10 · Zasláno: 3. 12. 2020, 21:40:18
quickspider:
Super. Ešte nezabudni na správne escapovanie, prečítaj si čosi o SQL Injection a funkcii mysqli_real_escape_string. |
||
Kajman Profil |
#11 · Zasláno: 4. 12. 2020, 00:38:31
Pokud bude nad sloupcem datum index a v tabulce bude hodně záznamů, tak bude mnohem rychlejší použít v dotaze podmínku
where datum between '2019-01-01' and '2019-12-31 23:59:59' Pro ošetření vstupů můžete také použít bindování proměnných. Něco jako $rok = 2019; $stmt = $pripojeni->prepare("select date_format(datum, "%d. %m. %Y") datum_f, text from news where datum between ? and ? order by datum desc"); $stmt->bind_param('ss', $rok.'-01-01', $rok.'-12-31 23:59:59'); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_array()) { ... } $stmt->close(); |
||
Časová prodleva: 3 roky
|
0