MySQL duplikace Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
honzaik
Level 2.5
Level 2.5
Příspěvky: 337
Registrován: říjen 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

MySQL duplikace  Vyřešeno

Příspěvekod honzaik » 16 pro 2011 16:53

Čau, koupil jsem si knihu "PHP a MySQL bez předchozích znalostí". Tam jsem narazil v tématu MySQL v PHP na skript, který nám vypíše data poslaná MySQL serverem. Prostě zde je skript

Kód: Vybrat vše

<html>
<head>
<title>Zaslání SQL příkazu do databáze</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<body>
<?php
 
// Připojení k databázi.
$db_spojeni = mysqli_connect
  ('localhost', 'root', 'lokomotiva', 'test', 3306);
 
// Otestování, zda se připojení podařilo.
if ($db_spojeni)
  echo 'Připojení se podařilo';
else
{
  echo 'Připojení se nepodařilo, sorry';
  echo '<br />';
  echo 'Popis chyby: ', mysqli_connect_error();
  exit();
}
 
// Zaslání SQL příkazu do databáze.
$objekt_vysledku = mysqli_query($db_spojeni, 'SELECT * FROM osoby');
 
if (!$objekt_vysledku)
{
  echo 'Poslání SQL příkazu se nepodařilo, sorry';
  echo '<br />';
  echo 'Popis chyby: ', mysqli_error($db_spojeni);
  exit();
}
 
// Zobrazení všech vrácených dat.
echo '<pre>';
while ($radek = mysqli_fetch_array($objekt_vysledku))
  var_dump($radek);
echo '</pre>';
 
// Zavření objektu výsledku, protože už ho nebudeme používat.
mysqli_free_result($objekt_vysledku);
 
// Odpojení od databáze.
if ($db_spojeni)
  mysqli_close($db_spojeni);
 
?>
</body>
</html>


nechápu to, proč když jsem si tento skript trochu poupravil od komentáře "//Zobrazení všech vrácených dat"
takto

Kód: Vybrat vše

<?php
$mysql_connection = mysqli_connect("localhost", "root", "babolat", "test", "3306");
if ($mysql_connection == true)
{
    echo "Hell yeah <br />";
}
else
{
    echo "fail <br />";
    echo mysqli_connect_error();
}
$raw_data = mysqli_query($mysql_connection, "SELECT * FROM osoby");

echo "<pre>";
$data = mysqli_fetch_array($raw_data);
while ($radek = $data)
    echo $radek."<br />";
?>

rád bych aby mi to někdo polopatě vysvětlil přesně co se tam děje a proč mi to udělá nekonečnou smyčku, když u toho druhého ne...
poté mě také napadlo udělat činnost toho cyklu while, tak že by mi to akorát vypsalo jména, které mám mimochodem v mysql databázi v 1. sloupci takže je to $radek[0], proč tomu nejde přiřadit samostatná proměnná...
takže by to vypadlo takto

Kód: Vybrat vše

while ($radek = mysqli_fetch_array($raw_data))
    $radek[0] = $jmeno;
    echo $jmeno."<br />"; //melo by vypsat jen jmena, takze 1. sloupec

ale místo toho to napíše Undefined variable.....
takže toto bych chtěl vysvětlit, jestli by někdo měl ty nervy na to
děkuji
Naposledy upravil(a) honzaik dne 17 pro 2011 20:56, celkem upraveno 1 x.
ello dere

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: MySQL data

Příspěvekod CZechBoY » 16 pro 2011 17:03

pač všechny resource z databáze jsou true takže While jede furt dokola, nebereš odnikud data (to bys musel dát viz. kod 3)
a proč to nevypisuje jméno?
protože přiřazuješ hodnotu z "ničeho" do dat
to je stejný jako 1=$cislo, taky to nebude fungovat
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
honzaik
Level 2.5
Level 2.5
Příspěvky: 337
Registrován: říjen 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: MySQL data

Příspěvekod honzaik » 16 pro 2011 17:16

o a ted mě napadlo, že moc nechápu jak ta podmínka u while funguje.. myslim správně že pokud se má co dát do proměnné $radek tak to pojede dál? a až už nic nebude tak to teda přestane?
ello dere

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: MySQL data

Příspěvekod CZechBoY » 16 pro 2011 17:20

jasně že pokud funkce MySQL_Fetch_Array (nebo jakákoliv jiná funkce) má co vracet (nevrátí int(0) nebo bool(false) nebo string(null)) tak while pokračuje
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
honzaik
Level 2.5
Level 2.5
Příspěvky: 337
Registrován: říjen 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: MySQL duplikace

Příspěvekod honzaik » 17 pro 2011 20:59

ted má ještě jeden dotaz. když si z databáze nechám vypsat data tak když mám 4sloupcovou tabulku (date, name, email, ip) tak když si to nechám vypsat pomocí toho cyklu a print_r tak jsem zjistil že to ty data posílá dvakrát ale s jinym indexem třeba

Kód: Vybrat vše

Array ( [0] => 2011-12-17 19:51:20 [date] => 2011-12-17 19:51:20

jde to nějak udělat aby to posílalo jen ty s číselnym indexem?
ello dere

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: MySQL duplikace

Příspěvekod CZechBoY » 17 pro 2011 21:17

jasně
používáš funkci MySQL_Fetch_Array ta vrací oba tvary
MySQL_Fetch_Assoc vrací v klíčích jen názvy sloupců
MySLQ_Fetch_Row vrací jen číslo sloupce v tom dotazu - číslované od 0
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
honzaik
Level 2.5
Level 2.5
Příspěvky: 337
Registrován: říjen 11
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: MySQL duplikace

Příspěvekod honzaik » 17 pro 2011 21:47

ok díky ;)
ello dere


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti