| 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: 5 let
|
|||
0