php/mysql απορίες...

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
Knorcedger
Script Master
Δημοσιεύσεις: 1226
Εγγραφή: 18 Μάιος 2004 04:29
Επικοινωνία:

php/mysql απορίες...

Δημοσίευση από Knorcedger » 04 Φεβ 2006 00:03

Ήρθε ο καιρός να μάθω και mysql :D

Αφού διάβασα τα βασικά, και ψάχτηκα αρκετά μόνος μου, μου δημιουργήθηκαν κάποιες απορίες.

Καταρχής, εστω αυτη ειναι η db

Κώδικας: Επιλογή όλων

users

id             mail
1         test@test.eu
2         fire@test.eu
3         yeah@test.eu

1) Με την εντολή SELECT * FROM users
επιετρέφει όλοκληρο τον παραπάνω πίνακα, ενω με την SELECT mail FROM users
επιστρέφει μόνο την στήλη mail?

Δηλαδη η δευτερη εκτελείται ποιο γρήγορα;


2) Βάζω τον παρακάτω κώδικα και πέρνω το πρωτο mail

Κώδικας: Επιλογή όλων

$result = mysql_query("select mail from users");
$row = mysql_fetch_array($result);
$downs = $row[0];
echo $downs;
Βάζοντας όμως "$row[1]" επιστρεφει "κενό". Γίνεται να πάρω το δευτερο mail χωρίς να χρησιμοποιήσω κάποιο loop (π.χ. while)
Εικόνα
myUbuntu.gr[Ελληνικός οδηγός για Ubuntu]

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

php/mysql απορίες...

Δημοσίευση από Rapid-eraser » 04 Φεβ 2006 00:29

katarxiv to * sto field list tou sql sou simevei ola ta pedia.
ara ama to perioriseis sto email 8a sou epistrepsei movo to mail field.
Afto eivai idietera xrisimo giati metaferovte ta dedomeva
movo pou mas xriazovte gia to query kai oxi ola ta periexomeva tis eggrafis.

Twra av 8es va fereis movo tnv defteri eggrafi
exeis 3 epilges pou mou erxovte sto mialo twra. av ksereis kapoio apo ta dio stixia
tis eggrafis mporeis va tnv pros8ioriseis me basi afto to stixio. av ksereis dld to id tis eggrafis n av ksereis to email pou periexete stnv eggrafi.

Afto givete meso tou where clause.

Κώδικας: Επιλογή όλων

SELECT `mail` FROM `users` WHERE `id`='2' LIMIT 1;
Edw 8a paratirises to limit part sto sql mas
afto periorizei tov ogko twv eggrafwv pou epistrefei to sql ... stnv periptosi mas mias kai ta id profavos eivai movadika afou exoume eva id perimevoume movo mia eggrafi ... ara giati va afisoume tnv mixavi tis mysql va sivexizei va psaxvei adika.
(praktikos o query optimiser tis mysql me to pou dei oti exoume primary key to id 8a stamatisei va psaxvei efosov exoume movo to id sto where me amesi ava8esi ... alla eivai kalo practice va to kavoume pavta)

Me aformi to limit paw stov deftero tropo va evtopiseis tnv defteri eggrafi. Afto 8a sou ferei pavtote tnv defteri eggrafi pou iparxei stov pivaka me basi kapoio ordering. Afto simevei pos av allaksei n sira gia kapoio logo 8a allaksei kai n defteri eggrafi profavos.

To limit tis mysql exei mia orea idiotita ... mporei va ferei ksekivovtas apo tnv x,y eggrafes eggrafi.
dld LIMIT 2,1 8a sou ferei mia eggrafi ksekivovtas apo tnv defteri . Afto katepektasi simevei oti 8a sou ferei tnv defteri eggrafi.
Afto bebea apo movo tou dev eivai poli sosto giati xoris sigkekrimevo ordering mporei va eivai opiadipote eggrafi. Ara bazoume kai to ordering sto pexvidi .
(simiosi av dev baloume order by n mysql 8a frovtisei va ferei me mia tixea sira tis eggrafes n opoia 8a eivai idia ka8e fora [toulaxistov etsi 8imame :P])

Κώδικας: Επιλογή όλων

SELECT `mail` FROM `users` ORDER BY `id` LIMIT 2,1;
Telos osov afora to mysql_fetch_array mporeis va ekmetaleftes to named index pou dimiourgei kai va avaferese sto pedio me basi to name tou kai oxi to offset siras pou erxete.

Gia tnv periptosi sou

Κώδικας: Επιλογή όλων

$row['id']
$row['mail']
Edw 8a i8ela va kavw mia simiosi.
H sira pou erxovte ta pedia sto $row apo to mysql_fetch_array erxete me basi tnv sira pou 8a tou poume sto sql clause mas.

Κώδικας: Επιλογή όλων

SELECT `id`,`mail` FROM `users`
Se afti tnv periptosi to $row[0] periexei to id
evo to $row[1] periexei to mail

Κώδικας: Επιλογή όλων

SELECT `mail`,`id` FROM `users`
Se afti tnv periptosi to $row[1] periexei to id
evo to $row[0] periexei to mail


Evo telos stnv periptosi pou feroume me * ola ta pedia afta erxovte me tnv sira pou ta exoume katagrapsei stov pivaka tis mysql otav to dimiourgisame.

Afto simevei pos eivai kalitera va avaferomaste sto indexed array kai va miv basizomaste stnv sira
pou 8a mas er8ouv ta pedia ektos kai av iparxei
bebea sigkekrimevos logos pou 8a 8elame va kavoume kati tetoio.

Simiosi pos n taxitita avaforas avamesa se offset tou array kai named index eivai amelitea.

Edw bebea iparxouv arketa pragmata pou mporeis va ma8eis mesa apo to manual kai 8a se bon8isouv oi avtistixes selides pou avaferovte stis functions.
sivoptika

mysql_fetch_array() - pliris array me associative [named index], numeric [offset] , exei sav deftero orisma to filtrarisma se eva apo ta dio - evo otav lipei to deftero orisma fervei kai ta dio taftoxrova
mysql_fetch_assoc() - movo to associative array
mysql_fetch_row() - movo to numeric array

exei poli iliko omos to manual rikse mia matia giati dev kserw ti va sou protopw :)

H triti pou mou ir8e sto mialo eivai va fereis ola ta data kai va kaveis seek to row pou 8es. bebea afto eivai xrisimo movo av exeis idi diatreksei to query se eva loop kai gia kapoio logo 8es va evtopiseis kapoia sigkekrimevi eggrafi. (xrisimo idios gia va kaveis reset tov pointer kai va ksavatrekseis to idio query apo tnv arxi xoris va to ekteleseis ksava.)

afto givete meso tis mysql_data_seek($resource,$row)

Afta ta oliga apo emeva.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

php/mysql απορίες...

Δημοσίευση από skeftomilos » 04 Φεβ 2006 01:39

1) Εκτελείται λίγο πιο γρήγορα και δεσμεύει λιγότερη μνήμη.

2) Μάλλον όχι.

Με πρόλαβε ο Rapid. :)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
Knorcedger
Script Master
Δημοσιεύσεις: 1226
Εγγραφή: 18 Μάιος 2004 04:29
Επικοινωνία:

php/mysql απορίες...

Δημοσίευση από Knorcedger » 04 Φεβ 2006 01:50

Ευχαριστώ για την υπερπλήρη απάντηση.

Αν και έχω κοιτάξει στα φευγαλαια όλες τις εντολες τις php για την mysql, θα κοιταξω περισσότερο αυτες που επισημένεις, και θα πειραματιστώ και με το LIMIT, και θα επανέλθω.

Μόλις ειδα και την απαντηση σου skeftomilos, tnx 4 the help
Εικόνα
myUbuntu.gr[Ελληνικός οδηγός για Ubuntu]

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

php/mysql απορίες...

Δημοσίευση από skeftomilos » 04 Φεβ 2006 02:24

Όχι Rapid-Eraser, μάλλον Rapid-Verboser! :D

(με την καλή έννοια!) :P
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες