PHP & Procedury – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

PHP & Procedury – PHP – Fórum – Programujte.comPHP & Procedury – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Dawo
~ Anonymní uživatel
19 příspěvků
19. 11. 2008   #1
-
0
-

Zdravím, jako obvykle se na Vás obracím, když mám opět problém.

Programuji aplikaci, kde už jsou trochu složitější dotazy a sám bych se v tomto rád více vzdělával. Takže jsem narazil na něco, co se jmenuje "Stored procedures" - Uložené procedury. Přičemž jsem také narazíl na kód:

DELIMITER |

CREATE PROCEDURE helloworld()
BEGIN
SELECT 'hello';
SELECT 'world';
END|


Což celkem chápu, složitější procedury taky není problém napsat. Narazil jsem ovšem na problém, když chci procedury kombinovat s PHP. Tedy abyste správně rozumněli, rád bych tuto proceduru nějak vypsal, získal z ní výsledek a to právě pomocí PHP. Je mi jedno jestli neobjektově či objektově, hlavně tak ať to pochopím.

Pokud je třeba PHP či MySQL nějak nastavit, aby vše fungovalo tak jak má, prosím napište mi jak.
Děkuji předem za jakoukoliv radu.

Dawo

Nahlásit jako SPAM
IP: 85.132.219.–
Reklama
Reklama
KIIV+42
God of flame
19. 11. 2008   #2
-
0
-

nejde udelat SELECT helloworld(); ??

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Dawo
~ Anonymní uživatel
19 příspěvků
19. 11. 2008   #3
-
0
-

Bohužel ne, vrací se chyba

faultCode1faultStringWarning:mysql_query() [http://www.mysql.com/doc]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER | CREATE PROCEDURE helloworld() BEGIN SELECT 'hello'; SELECT 'wo' at line 1 in D:\firma\Www\domain\tmp\test.php on line 13


faultCode1faultStringWarning:mysql_query() [http://www.mysql.com/doc]: FUNCTION makrakeramstudio_is.helloworld does not exist in D:\firma\Www\domain\tmp\test.php on line 15faultCode1faultStringWarning:mysql_fetch_array(): supplied argument is not a valid MySQL result resource inD:\firma\Www\domain\tmp\test.php on line 16


Ta první chyba je výsledkem zavolání fce
ini_set('mysql.trace_mode', '1');


Nějak si prostě nevím rady... otázkou je, jestli na to nejdu celkově blbě...

ini_set('mysql.trace_mode', '1');


mysql_connect('localhost', 'root', 'pass', false, 131074);
mysql_select_db('db');


mysql_query("DELIMITER |
CREATE PROCEDURE helloworld()
BEGIN
SELECT 'hello';
SELECT 'world';
END| ");

mysql_query("SELECT helloworld()");

Nahlásit jako SPAM
IP: 85.132.219.–
Prog.0
Věrný člen
19. 11. 2008   #4
-
0
-

To Dawo :

mysql proceduru zavolaš takto:

call helloworld()


mysql api však neumožnuje multi result takže prečítaš asi iba posledný výstup procedúry, t.j. iba ten
SELECT 'world';
, teda aspoň myslím... Ak mám pravdu, tak by si to možno dalo vytiešiť pomocou mysqli, ale to ja neporadím...

Jou, a myslím že mysql je zdokumentované dosť dobre, tak nerozumiem prečo sa zaťažuješ na fóre, ešte ktomu PHP (offtopic).

Nahlásit jako SPAM
IP: 213.160.186.–
Prog.
19. 11. 2008   #5
-
0
-

Pohybyju ze mysli umi neco navic, je to jen trochu jine rozhrani pro pristup k funkcim jazyka pomoci OOP.

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Prog.0
Věrný člen
19. 11. 2008   #6
-
0
-

To CommanderZ : mysqli má objektový ale aj procedúrový prístup. Ale to nie je jediný rozdiel od mysql. Napr vie tie multiquery: http://sk.php.net/manual/en/mysqli.multi-query.php
(mysqli = MySQL Improved)

Nahlásit jako SPAM
IP: 213.160.186.–
Prog.
Dawo
~ Anonymní uživatel
19 příspěvků
19. 11. 2008   #7
-
0
-

To Prog. : Omlouvám se. Věř mi, že před tím, než jsem postnul příspěvěk jsem toho prohledal i vyzkoušel dost, zase taková lamka nejsem. Bohužel nemám tušení jak to přesně zakomponovat. S tímhle na mě musíš jak na debila. Když zavolám onu proceduru, jak docílím přes PHP toho aby mi to "vyechovalo" nějakou hodnotu? Dejme tomu konkrétně "World"? Tohle mi prostě není jasné.

Nahlásit jako SPAM
IP: 85.132.219.–
Dawo
~ Anonymní uživatel
19 příspěvků
19. 11. 2008   #8
-
0
-

Problém vyřešen - Klávsnice ~ Židle. Asi jsem přepracovaný, i tak děkuji všem. :)

Nahlásit jako SPAM
IP: 85.132.219.–
Prog.0
Věrný člen
19. 11. 2008   #9
-
0
-

Ako si to vyriešil?

Ja som to akurat spojazdnil cca takto:


  mysqli_multi_query($link, "CALL test.helloworld()");


do
{
if ($r = mysqli_store_result($link))
{
echo '<table border="1">';
while($l = mysqli_fetch_row($r) ) echo '<tr><td>'.implode('</td><td>',$l).'</td></tr>';
echo '</table>';
}
} while (mysqli_next_result($link));

mysqli_close($link);

Nahlásit jako SPAM
IP: 213.160.186.–
Prog.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 51 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý