Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Súčet v mysql

Čaute, prosím Vás kto mi poradí kde mám v tomto scripte chybu, potrebujem spočítať súčty z dvoch tabuliek a stále mi vypisuje 0.
<?
$spojenie=mysql_connect("localhost","root","");

$dodane="SELECT SQL_CALC_FOUND_ROWS SUM(`Mnozstvo`) FROM `naklady`";
$predane="SELECT SQL_CALC_FOUND_ROWS SUM(`predaj`) FROM `predaj`";
$zostatok=($dodane-$predane);
echo $zostatok;
?>

Předmět Autor Datum
nejprve musíš ty mysql dotazy vykonat: <? $spojenie=mysql_connect("localhost","root",""); $q = mysq…
marekdrtic 07.06.2009 16:18
marekdrtic
Vypisuje chybu v riadku 6 a 10 a potom vypíše 0
klobasa-irca 07.06.2009 16:23
klobasa-irca
Možná, že by bylo dobré vypsat chybu, kterou to hlásí.
marekdrtic 07.06.2009 16:28
marekdrtic
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\xampp\htdoc…
klobasa-irca 07.06.2009 16:32
klobasa-irca
Tak je blbě ten MySQL dotaz. PS: Co tohle? SELECT SUM(`Mnozstvo`) ..........
marekdrtic 07.06.2009 16:36
marekdrtic
To je úplne to isté
klobasa-irca 07.06.2009 16:40
klobasa-irca
Spusti si tie dopyty najprv priamo nad databázou (napr. v phpMyAdminovi) a zistíš kde je chyba. Prí…
los 07.06.2009 16:43
los
To fakt neviem na čo to je, ale vypísal mi to phpMinAdmin, keď som zadal príkaz na súčet stĺpca, som…
klobasa-irca 07.06.2009 16:53
klobasa-irca
Skúsil si už to "or die..."? Čo to vypísalo? Veľkosť písmen v mene tabuľky je v poriadku?
los 07.06.2009 17:33
los
Vypísalo mi: No database selected Veľkosť písmen je v poriadku
klobasa-irca 07.06.2009 17:42
klobasa-irca
Aha, "No database selected" znamená, že nie je zvolená žiadna databáza. Hneď po mysql_connect použi…
los 07.06.2009 17:46
los
Vypisuje mi chybu v riadku 7 kde je: $r = mysql_fetch_row($q); a v riadku 12 : $rr = mysql_fetch_r…
klobasa-irca 07.06.2009 18:07
klobasa-irca
A tá chyba je aká? :-) Dúfam, že do tej funkcie mysql_select_db si dal aj dobré meno databázy. :-)
los 07.06.2009 18:08
los
Samozrejme som ho dal, ale až teraz a už to funguje, je to super, ďakujem veľmi pekne. Ale prosím Ťa…
klobasa-irca 07.06.2009 18:24
klobasa-irca
Funkcia mysql_error robí to, čo je napísané v manuáli - vráti text chybového hlásenia predchádzajúce…
los 07.06.2009 18:31
los
Túto databázu mám pre vlastnú potrebu, na sledovanie objednávok a predaja klobásy, nebudem ju nikde… poslední
klobasa-irca 07.06.2009 18:35
klobasa-irca
špatně: Vypisuje mi chybu v riadku 7 kde je: dobře: V řádku 7 mi to vypisuje chybu: "přesnézněnítéch…
Kráťa 07.06.2009 18:23
Kráťa

nejprve musíš ty mysql dotazy vykonat:

<?
$spojenie=mysql_connect("localhost","root","");


$q = mysql_query("SELECT SQL_CALC_FOUND_ROWS SUM(`Mnozstvo`) FROM `naklady`");
$r = mysql_fetch_row($q);
$dodane = $r[0];

$qq = mysql_query("SELECT SQL_CALC_FOUND_ROWS SUM(`predaj`) FROM `predaj`");
$rr = mysql_fetch_row($qq);
$predane = $r[0];


$zostatok=($dodane-$predane);
echo $zostatok;
?>

Spusti si tie dopyty najprv priamo nad databázou (napr. v phpMyAdminovi) a zistíš kde je chyba.

Prípadne to zapíš $q = mysql_query(...) or die(mysql_error()); a potom tiež uvidíš, kde je chyba. (Ak tam to "or die..." necháš aj po odhalení chyby, tak bezpečnostné riziká, ktoré z toho vyplývajú, si rieš sám.)

To SQL_CALC_FOUND_ROWS tam máš na čo? Vieš aspoň, na čo to slúži? :-)

Funkcia mysql_error robí to, čo je napísané v manuáli - vráti text chybového hlásenia predchádzajúcej MySQL operácie. Funkcia die robí to isté čo exit (ale má lepší názov :-)) - vypíše správu a ukončí vykonávanie skriptu.

Nie je to príliš nebezpečné, ale v prípade chyby to môže prezradiť niečo o štruktúre tvojej databázy. Takže ak by tam k tomu bola ešte chyba umožňujúca SQL injection, tak by bol útok o malý kúsok ľahší.

Zpět do poradny Odpovědět na původní otázku Nahoru