Απορία - Επικοινωνία βάσης και αρχείου php

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

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

Απάντηση
ioannisls
Δημοσιεύσεις: 83
Εγγραφή: 11 Ιαν 2012 15:50
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από ioannisls » 17 Μάιος 2014 23:34

Θα ήθελα να κάναμε μια κουβέντα όσον αφορά το ποιο γρήγορο τρόπο επικοινωνίας μεταξύ βάσης και ενός αρχείου php.

Και θέτω το πρώτο ερώτημα ....

Ποιο από τα δύο είναι προτιμότερο;
1ον) Να παίρνω δεδομένα με Select και όποτε χρειάζομαι να τρέχω το select. Και όποτε χρειάζεται να κάνω Update στη βάση να την κάνω
2ον) να τρέξω μία φορά το Select και να αποθηκεύει τα δεδομένα που θέλουμε σε array, και όπου χρειάζεται να κάνει αλλαγές στο array. Και στο τέλος όλων να κάνει Update τη βάση μέσω του array

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από giannis17 » 18 Μάιος 2014 10:48

Το 2ο

Επίσης πολύ στην ταχύτητα βοηθάει η σωστή δομή της βάσης με foreign keys αλλά και η δημιουργία views για τα πιο κοινά select (τραβάς τα δεδομένα από cache αντί να τα φτιάχνει κάθε φορά).
"There is only one problem with common sense; it’s not very common."
– Milt Bryce

ioannisls
Δημοσιεύσεις: 83
Εγγραφή: 11 Ιαν 2012 15:50
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από ioannisls » 20 Μάιος 2014 08:37

Μιλάμε η χρήση των array απογειώνει τη ταχύτητα. Κοντεύω να ξεχάσω ποια είναι η σύνταξη από τη SELECT. Όσα αναφέρεις (foreign keys, views) θα τα κοιτάξω .....

Απλά έχω μία απορία ... το να τραβήξω μία γραμμή της βάσης σε ένα array είναι πανεύκολο, το να τραβήξω π.χ. 5 γραμμές σε ένα multi array πως γίνεται ;;; γιατί έχω 10 ώρες που ψάχνω να το βρω πως γίνεται;

Και για να σας βοηθήσω στη βοήθεια σας ....

Έστω ότι η βάση μας είναι ο πίνακας της συνημμένης εικόνας.
Αυτό που ουσιαστικά θέλω είναι το παρακάτω:
$my_array = array (
array ('1','Lombard Street','Pripyat',Ukraine),
array ('2','Abbey Road','Varosha','Nothern Cyprus'),
.......
array ('10','Champs-Elysees','Agdam','Azerbaijan')
);
Συνημμένα
Χωρίς τίτλο.png
Πίνακας βάσης
(17.32 KiB) Μεταφορτώθηκε 93 φορές

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από giannis17 » 20 Μάιος 2014 09:37

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

$q = mysql_query("SELECT * FROM roads");

$data = array();

while($row = mysql_fetch_assoc($q))
{
    $data[] = $row;
}
Μετά μπορείς να δεις όλα τα δεδομένα της data με ένα print_r αλλά αφού καταλάβεις πως λειτουργεί μετά καλύτερα να χρησιμοποιείς foreach για να loopάρεις ανάμεσα στις τιμές.
"There is only one problem with common sense; it’s not very common."
– Milt Bryce

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από gvre » 20 Μάιος 2014 09:56

@giannis17 Το MySQL extension είναι deprecated, γι' αυτό είναι προτιμότερο να χρησιμοποιηθεί το pdo ή το mysqli.

@ioannisls Δεν υπάρχει standard απάντηση στην αρχική σου ερώτηση. Η λύση που θα εφαρμόζεις κάθε φορά θα εξαρτάται από κάποιες παραμέτρους, όπως π.χ. το μέγεθος των δεδομένων που διαβάζεις από τη βάση.

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από giannis17 » 20 Μάιος 2014 10:09

πφφφ :hammer:

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

$q = $db->query("SELECT * FROM roads");

$data = array();

while($row = $q->fetch_assoc())
{
    $data[] = $row;
} 
για αυτό εγώ δεν αναβαθμίζω την php...τα μισά μου scripts θα σταματήσουν να δουλεύουν ^^
"There is only one problem with common sense; it’s not very common."
– Milt Bryce

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από gvre » 20 Μάιος 2014 10:14

Μπορείς να αναβαθμίσεις σε php 5.5 και σταδιακά να αλλάξεις τον κώδικά σου (με το χέρι ή με κάποιο migration script που θα φτιάξεις).

ioannisls
Δημοσιεύσεις: 83
Εγγραφή: 11 Ιαν 2012 15:50
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από ioannisls » 20 Μάιος 2014 10:21

Κατ' αρχάς για άλλους που μπορεί να έχουν στο μέλλον απορίες να τους πω ότι το print_r βγάζει array της μορφής
Array (
[0] => Array ( [Street] => Lombard Street [Town] => Pripyat [Country] => Uktaine)
[1] => Array ( [Street] => Abbey Road [Town] => Varosha[Country] => Northern Cyprus)
....
[10] => Array ( [Street] => Champs-Elysees [Town] => Agdam [Country] => Azerbaijan)
)
οπότε αν θέλετε να κάνετε echo μία συγκεκριμένη τιμή. π.χ. Την Street με id 6
στο κώδικα σας θα γράψετε
echo $my_array[6][Street]
Να ρωτήσω όμως;

Αν τις ονομασίες από τις στήλες θέλω να τις έχω με νούμερα;
δηλαδή η Street=1 , Town=2 , Country=3

οπότε το echo του παραπάνω παραδείγματος να είναι της μορφής
echo $my_array[6][1]

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από giannis17 » 20 Μάιος 2014 10:26

gvre έγραψε:Μπορείς να αναβαθμίσεις σε php 5.5 και σταδιακά να αλλάξεις τον κώδικά σου (με το χέρι ή με κάποιο migration script που θα φτιάξεις).
Το ξέρω αλλά είναι πολλά και δεν πρόκειται να κάτσω να ασχοληθώ με αυτά, για optimization είναι δεν κλείνει κανα τεράστιο κενό ασφαλείας (τουλάχιστον κάποιο που δεν έκλεινε αλλιώς) να πω πρέπει να τα αλλάξω οπωσδήποτε. Το Σεπτέμβρη θα μισθώσω καινούριο vps και θα μεταφέρω τα νέα project εκεί.
Αν τις ονομασίες από τις στήλες θέλω να τις έχω με νούμερα;
δηλαδή η Street=1 , Town=2 , Country=3
αλλάζεις το

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

fetch_assoc
με

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

fetch_array
"There is only one problem with common sense; it’s not very common."
– Milt Bryce

ioannisls
Δημοσιεύσεις: 83
Εγγραφή: 11 Ιαν 2012 15:50
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από ioannisls » 20 Μάιος 2014 10:27

thanks giannis17
http://luckyweek.eu/
Στατιστικά για το στοιχηματικό ποδόσφαιρο και τα τυχερά παιχνίδια

ioannisls
Δημοσιεύσεις: 83
Εγγραφή: 11 Ιαν 2012 15:50
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από ioannisls » 21 Μάιος 2014 09:43

Καλημέρα και για σήμερα,
σε multi array π.χ.

$my_array[][]

ενώ είναι γεμάτο (όπως φαίνεται σε print_r)
όταν προσπαθώ να το γεμίσω με for

π.χ. θέλω να μετατρέψω ένα συγκεκριμένο εύρος από το πρώτο array
for ($i=2, $i<22;++$i) {
$my_array[0][$i]=0;
}
ή να μηδενίσω όλο το πίνακα.

for ($i=0, $i<22;++$i) {
for ($k=0, $k<22;++$k) {
$my_array[$k][$i]=0;
}
}
δεν κάνει απολύτως τπτ

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από alou » 21 Μάιος 2014 10:21

$i=2; $i<22;++$i

έχεις ,
βαζεις ;

ioannisls
Δημοσιεύσεις: 83
Εγγραφή: 11 Ιαν 2012 15:50
Επικοινωνία:

Απορία - Επικοινωνία βάσης και αρχείου php

Δημοσίευση από ioannisls » 21 Μάιος 2014 10:27

νιώθω τουλάχιστον χαζός ... κακό πράγμα η νύστα .... thanks alou
http://luckyweek.eu/
Στατιστικά για το στοιχηματικό ποδόσφαιρο και τα τυχερά παιχνίδια

Απάντηση

Επιστροφή στο “MySQL”

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

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