| | |
| Stránka: 1 z 1
| [ Príspevkov: 26 ] | |
Autor | Správa |
---|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal camo: 08.12.2009 9:42 | |
|
Zdravím!
Mám taký úplne začiatočnícky problém.
Nechápem logiku pripojovania sa ku databáze.
Mám v knihe takýto kód:
Citácia: $mysql= mysqli_conect('localhost', 'webauth', webauth'); if(!$mysql) {echo ' K databaze sa neda pripojit '; exit; }
$selected=mysqli_select_db($mysqli, 'auth'); if(!$selected) {echo 'Databazu nemožno vybrať '; exit; }
$query="select count(*) from authorized_users where name= '$name' and password='$password' ";
$result=mysqli_query($mysql, $query); if(!$result) {echo 'Poziadavku nemozno spustit '; exit; }
Nechapem tento riadok: Citácia: $result = mysqli_query($mysql, $query);
Prečo v zátvorkách nieje aj premenná $selected
Podľa mňa by tam mala byť.
Dúfam, že chápete prečo by tam podľa mňa mala byť.
Vie my niekto vysvetliť, prečo tam byť nemusí?
Vďaka moc!
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
tento kod ti aj funguje? lebo raz pouzivas $mysql, potom zasa $mysqli
$selected obsahuje bud true, alebo false podla toho, ci sa podarilo pripojit k db... tuto hodnotu nepotrebujes predavat do dalsich prikazov...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 08.12.2009 10:26 | |
|
To som opísal z knihy(PHP Mysql Rozvoj webových aplikácií; Laura Thomson + Luke Welling; str.342).
Ale syntax teraz ešte neriešim. To som len zle opísal. Opravujem.
To chápem.
No a čo obsahuje $mysql a $result?
Ja to chápem, ako, že obsahujú cestu a mne tam stále chýba cesta ku konkretnej databaze.
Asi tak, že:
$mysql je cesta k DB serveru, $selected je cesta k databáze a $query cesta ku tabuľke.
Asi som nieco nepochopil, ale neviem co?
Čím je to dané, že $selected obsahuje true/false a $mysql potom obsahuje čo?
|
|
Registrovaný: 11.08.09 Prihlásený: 30.04.12 Príspevky: 22 Témy: 4 |
Takze pre tvoju informaciu:
Kód: $link = mysql_conect($server, $login, $password'); Pomocou funkcie mysql_conect sa pripajas na server s mysql databazou. Ak je spojenie uspesne, tak funkcia vrati link na dane spojenie a ak nie tak vrati false. Viac na http://sk.php.net/manual/en/function.mysql-connect.phpPomocou tohoto zapisu: Kód: $is_select_db = mysql_select_db($database_name, $link); si nastavis databazu, s ktorou chces pracovat. Ak dana databaza existuje a je nastavena ako aktivna, tak funkcia vrati hodnotu true inak false. Viac info tu: http://sk.php.net/manual/en/function.mysql-select-db.phpCo sa tyka tohoto: Kód: $result = mysql_query($query, $link); Tak tym vykonavas uz jednotlive sql prikazy nad danou db. Do premennej $result sa ti "vrati odpoved". Jasnejsie ti to bude ked sa pozries sem: http://sk.php.net/manual/en/function.mysql-query.phpPomocou tych podmienok co tam mas: Kód: if(!$link) {echo ' K databaze sa neda pripojit '; exit; }
if(!$is_select_db) {echo 'Databazu nemožno vybrať '; exit; }
if(!$result) {echo 'Poziadavku nemozno spustit '; exit; }
Len zistujes ci sa ti najprv podarilo pripojit k databaze, ak hej, nasledna podmienka je zistenie, ci sa ti podarilo vybrat konkretnu databazu, s ktorou chces pracovat a pomocou poslednej podmienky zistis, ci sa ti sql prikaz vykonal alebo nie.
Snad som ti to nejak priblizil (jednoduchsie som to uz napisat nevedel )
|
|
Registrovaný: 30.04.09 Prihlásený: 11.02.10 Príspevky: 723 Témy: 81 |
1. mysqli_conect('localhost', 'webauth', webauth'); pripojis sa k db servru (tym ze to das do premennej tak zistis pomocou boolean ci si sa pripojil alebo nie)
2.mysqli_select_db($mysqli, 'auth'); vyberies db s premennou ako hore
3.$query=mysqli_query($mysql, $query); odosles poziadavku $query do databazi (s premennou ako furt + este nieco)
nato aby si mohol aj ziskat konkretnu datovu odpoved ti chyba este jeden krok napr
$odpoved=mysql_fetch_row($query)
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 08.12.2009 15:43 | |
|
Glama:
toto ako môže fungovať: Kód: 3.$query=mysqli_query($mysql, $query); odosles poziadavku $query do databazi (s premennou ako furt + este nieco) Vidíš že som z toho na lopúchy a ešte mi mútiš hlavu takýmito konštrukciami.
jojko:
Vďaka za snahu, ale stále nič. už teda chápem ,že mysql_conect vracia resource, ale podĺa mńa by resorce mala vracať aj mysql_select_db. Tá ale vracia true/false
No a nakoniec nechápem načo musí byť vlastne v mysql_query a v mysql_select ako parameter to $link
Jednoducho ako to, že počítač nevie aké je spojenie ale vie akú databázu má toto spojenie vybrať. Na jednej strane nevie to čo som už deklaroval(mysql_conect) a na druhej str. vie čo som deklaroval(mysql_select).
Ešte raz ako to že nevie kam sa má pripojiť, ale vie, že sa má pripojiť ku konkrétnej DB.
Já viem som prípad.
|
|
Registrovaný: 30.04.09 Prihlásený: 11.02.10 Príspevky: 723 Témy: 81 |
mozes mat v jednom cykle viac spojeni na rozne db pripadne jedno pripojenie na viacere DB
nevidim dovod preco by to nemalo fungovat, mozno som mal napisat rozdielne premenne vyzera to vtipne ale funkcne
tym !este nieco! som chcel povedat ze s tou prmennou budes narabat ak budes chciet vytiahnut aj dake vysledky takze ma preteba aj iny vyznam ako len zistit ci dopyt prebehol v poriadku
akurat nemiesaj to mysql a mysqli ..
edit
a to select_db mozes pouzit aj s jednym parametrom ak uz mas spojenie
mysql_select_db($dbName)
Naposledy upravil pilná lama glama dňa 08.12.2009 15:50, celkovo upravené 1
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
parameter "$link" je nepovinny... ak ho neuvedies, pouzije sa posledne zname "pripojenie"... uvadzat ho ma zmysel len v pripade, ak sa pripajas napr. na viacero databaz...
staci si precitat manual:
Citácia: The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If by chance no connection is found or established, an E_WARNING level error is generated.
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 08.12.2009 16:03 | |
|
Myslím, že som to pochopil, teda dúfam
Ide teda o to, že môže prebiehať aj viacej spojení s DB v jednom scripte a teda sa musí vždy konkretizovať presne ktoré to je. No a zase som tam kde som bol. Lebo môže byť predsa aj viac spojení s rôznymi databázami, ako písal Glama, v rámci jedného DB serveru. To by potom muselo byť aj to špecifikované, nie?.
No ešte sa nad tým musím zamyslieť, ale už sa mi rozvidnieva
Edit/:No už mi svitá na lepšie časy -
asi!
Teda mysql_select je iba kôli overeniu. Mysql_conect vlastne obsahuje aj spojenie s konkrétnou databázou, teda je už kompletné. Ja som myslel, že ten mysql_select ho nejako dopĺńa.
Dík moc!
Pekný večer!
Naposledy upravil camo dňa 08.12.2009 16:17, celkovo upravené 1
|
|
Registrovaný: 30.04.09 Prihlásený: 11.02.10 Príspevky: 723 Témy: 81 |
to spojenie specifikujes ako
$link = mysql_conect($server, $login, $password');
$link2 = mysql_conect($server, $login, $password');
a pod
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 08.12.2009 16:19 | |
|
Mysql_conect vlastne obsahuje aj spojenie s konkrétnou databázou, teda je už kompletné. Ja som myslel, že ten mysql_select ho nejako dopĺńa.
Dík moc!
Pekný večer!
|
|
Registrovaný: 30.04.09 Prihlásený: 11.02.10 Príspevky: 723 Témy: 81 |
doplna pripojis sa na db serv a zo select db otvoris konkretnu db ktoru chces
aj tebe
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
camo píše: Mysql_conect vlastne obsahuje aj spojenie s konkrétnou databázou, teda je už kompletné. Ja som myslel, že ten mysql_select ho nejako dopĺńa.
nie, pomocou mysql_connect sa pripajas len na databazovy server... konkretnu pracovnu databazu si volis pomocou mysql_select_db
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 08.12.2009 17:46 | |
|
ČO?!!!
veď predsa heslo a meno(tie parametre mysql_conect) sú určené len jednej konkrétnej DB, nie?
|
|
Registrovaný: 30.04.09 Prihlásený: 11.02.10 Príspevky: 723 Témy: 81 |
si mylis pojmi db server a databaza na jednom db serveri mozes mat viac databaz
cize az ked sa prihlasis na serv mozes otvorit databazu
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 09.12.2009 19:06 | |
|
Pilná glama:
DBServer a DB si nemýlim.
Nedáva to zmysel.
V mysql_selecte musím uviesť aj link na DB server, lebo môžem mať viac serverových spojení, inak sa použije posledné deklarované spojenie.
To isté by podľa mňa malo platiť aj o databáze.
Naproti tomu DB uviesť nemusím.
Ako je to možné?
Veď aj DB tam môže byť viac, nie?.
Ako potom bude select vedieť, ktorú DB myslím.
Pozeral som si [url]http://sk.php.net/manual/en/function.mysql-query.php
[/url], ale nieje tam žiadny parameter pre určenie cesty k databáze.
PS:Pilná glama, nemáš nejaký krajší avatar. No a ako je možné, že tvoj má viac ako 80*80px?!
|
|
Registrovaný: 30.04.09 Prihlásený: 11.02.10 Príspevky: 723 Témy: 81 |
camo píše: PS:Pilná glama, nemáš nejaký krajší avatar. No a ako je možné, že tvoj má viac ako 80*80px?!
veru moj ma 120x120 to je vysada tych co vedia citat,
mam kopu avatarov v dnesne dni som sa rozhodol mat tento a aj ked nieje pekny je pravdivy
---tot konec debaty na tuto ot---vcul k veci
samozrejme ze to plati aj o databaze.
rozumies spojenie ma tri kroky
-server
-databaza
-tabulka
ked mas databazi na jednom servri a chces tahat z inej ako mas deklarovane staci ti zadat len novu databazu
ak ale sa pripojis na iny db server musis deklarovat aj ten a logicky aj databazu nanom
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 09.12.2009 20:11 | |
|
glama:
Citácia: staci ti zadat len novu databazu
Prosím trpezlivosť!
No veď jasné, že stačí, ale kde?
Veď o to mi ide, že by som to čakal v mysql_selecte.
Ako ten blbý selct vie, ktorú DB myslím.
Ktorý DB server myslím, vie preto, že mu to predávam v argumente, ale DB sa mu nepredáva.
Ako to, že ten select vie, ktorú DB myslím, keď nevie, ktorý DB server myslím? Veď na tom serveri môže byť predsa tiež viacej databáz, tak isto ako môže byť aj viacej DB serverov.
|
|
Registrovaný: 20.07.08 Príspevky: 474 Témy: 1 Bydlisko: Kosice | Napísal mbc: 09.12.2009 20:20 | |
|
nie som sice PHP aktivny, ale predpokladam, ze je to takto:
mysql_conect vracia OBJECT $mysql, ktory obsahuje info o pripojeni
mysql_select_db nastavuje aktualnu databazu, cize zmeni nejake PROPERTY toho objektu $mysql
preto ho uz nemusis zadavat ako parameter ostatnym funkciam, v $mysql to uz je ulozene
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 09.12.2009 20:41 | |
|
mbc:
Tak by sa to dalo vysvetliť.
Lenže:Sets the current active database on the server that's associated with the specified link identifier. Every subsequent call to mysql_query() will be made on the active database.
Lenže tam o objekte neni nič.
Ten specified link identifier by sa musel vždy nejako nešikovne meniť, ak by som chcel inú DB na tom istom DB servery.
Alebo to nieje nešikovné a je to normálne?
Ako prehodím tú ,,výhybku,,, keď v ďalšom mysql_query budem chcieť inú databázu?
To budem musieť vypisovať aj mysql_select aj mysql_query_db?
Bitte, hilfe!
|
|
Registrovaný: 20.07.08 Príspevky: 474 Témy: 1 Bydlisko: Kosice | Napísal mbc: 09.12.2009 20:56 | |
|
camo píše: Ako prehodím tú ,,výhybku,,, keď v ďalšom mysql_query budem chcieť inú databázu? To budem musieť vypisovať aj mysql_select aj mysql_query_db?
pravdepodobne ANO
alebo pri praci s viacerymi databazami si spravit dve pripojenia $mysql1 a $mysql2, sice ten isty server, ale rozne databazy
neviem co je zauzivany a odporucany sposob v PHP
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 09.12.2009 21:15 | |
|
camo, pozeral si to síce v manuáli, ale nedôsledne. Ak sa chceš pripojiť k rôznym databázam na tom istom databázovom serveri, urobíš to takto: Kód: <?php $handle_db1 = mysql_connect("server","user","passwd"); $handle_db2 = mysql_connect("server","user","passwd", true);
// give each handle it's own database to work with, permanently. mysql_select_db("db1",$handle_db1); mysql_select_db("db2",$handle_db2);
//do a query from db1: $query = "select * from test"; mysql_query($query,$handle_db1);
//do a query from db2 : $query = "select * from test"; mysql_query($query, $handle_db2);
//etc ?> Je to tak preto, že ak viackrát voláš mysql_connect s rovnakými parametrami (tj. pripájaš sa na ten istý server s tým istým používateľom), tak sa znovupoužije už predtým vytvorený identifikátor pripojenia. Čiže napr. kód Kód: <?php $db1 = mysql_connect("server", "user", "passwd"); $db2 = mysql_connect("server", "user", "passwd"); mysql_select_db('db1', $db1); mysql_select_db('db2', $db2); ?> znamená, že aj link $db1 bude mať ako databázu v skutočnosti vybranú "db2". Pridaním štvrtého parametra s hodnotou true si vynútiš vytvorenie nového identifikátora spojenia.
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 09.12.2009 21:16 | |
|
mbc:
Takže treba vytvoriť dve pripojenie mysql_conect.
To by šlo.
Ešte keby sa vyjadril nejaký PHP profesionál, či sa to tak robí, aj keď chápem, že to asi moc časté nieje.
Dík moc!
p360t: Takže to čo písal nbc, ak to správne chápem+ to true?
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 09.12.2009 21:20 | |
|
Áno, ale nesmieš zabudnúť pri opakovanom volaní dať ten štvrtý parameter na true, inak ti to nebude fungovať (pretože jeho predvolená hodnota je false a znamená znovupoužitie existujúceho identifikátora).
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 09.12.2009 21:36 | |
|
Uf tak vďaka všetkým
a dovidenia opäť nabudúce!
Ale povedzte je toto logické?
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 09.12.2009 23:13 | |
|
Bez ohľadu aké to je, je to poriadne zdokumentované v manuáli, takže stačí ho dôkladne čítať (oplatí sa čítať aj diskusie k jednotlivým funkciám a pod).
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
| Stránka: 1 z 1
| [ Príspevkov: 26 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|