MySQL ανάκτηση πίνακαεπεξεργάζεται τα αποτελέσματα της δειγματοληψίας από τη βάση δεδομένων και επιστρέφει ως αποτέλεσμα έναν κανονικό, συσχετιστικό ή και τους δύο πίνακες. Στην πραγματικότητα, η ανάκτηση MySQL είναι μια μετάφραση πληροφοριών που λαμβάνονται από ένα ερώτημα βάσης δεδομένων σε μια φόρμα κατάλληλη για επεξεργασία.

Για απλά ερωτήματα, η σύνταξη χρησιμοποιεί μια σειρά του δείγματος για να μετατραπεί σε πίνακα, ενώ για τα ερωτήματα ροής, αυτό είναι ένα εργαλείο για τη διαδοχική επεξεργασία της ροής πληροφοριών.

Παράδειγμα σύνταξης και εφαρμογής

Στην είσοδο PHP MySQLλαμβάνεται πίνακας ανάκτησης του αποτελέσματος του αιτήματος και μπορεί να καθοριστεί η μορφή του επιθυμητού αποτελέσματος:

  • MYSQL_ASSOC;
  • MYSQL_NUM;
  • MYSQL_BOTH.

Στην πρώτη περίπτωση θα σχηματιστεί ένας συσχετιστικός πίνακας, στη δεύτερη περίπτωση ένας πίνακας με αριθμητικούς δείκτες και στην τελευταία περίπτωση θα είναι διαθέσιμος ένας πίνακας με δείκτες και των δύο τύπων.

Ως αποτέλεσμα της εκτέλεσης $aFetch = mysqli_fetch_array($cResult)θα δημιουργηθεί ένας πίνακας $aFetch.

ΣΕ σε αυτό το παράδειγμαΟ πίνακας ανάκτησης MySQL επεξεργάζεται τα αρχικά δεδομένα (1). Υπάρχουν μόνο τέσσερις εγγραφές στον πίνακα, για κάθε μία εκτελούνται διαφορετικές επιλογές ανάκτησης. Το αποτέλεσμα της επεξεργασίας του δείγματος (2) συρράπτεται σε γραμμές δεδομένων (3): $cFetch, $cFetch1, $cFetch2, $cFetch3.

Τα αποτελέσματα δείχνουν ότι χωρίς τον καθορισμό των σταθερών MYSQL_ASSOC, MYSQL_NUM και MYSQL_BOTH, προκύπτει το ίδιο αποτέλεσμα όπως στην περίπτωση του MYSQL_BOTH. Αυτές οι σταθερές καταργούνται και η χρήση τους καταργείται.

Χρήση πίνακα ανάκτησης MySQL

Η χρήση αποτελεσμάτων ερωτημάτων σε μορφή πίνακα είναι πολύ βολική στα προγράμματα PHP. Πρόσβαση στη λειτουργικότητα Βάση δεδομένων MySQLπαρέχει ασφαλή και αξιόπιστες μεθόδουςπρόσβαση.

Ο πίνακας ανάκτησης MySQL δημιουργεί ένα σφάλμα επιπέδου προειδοποίησης μόνο σε μια κατάσταση όπου το $cResult λείπει ή δεν είναι έγκυρο και επομένως η σύνδεση με τη βάση δεδομένων απέτυχε. Το όνομα $cResult μπορεί να είναι οτιδήποτε, εδώ χρησιμοποιείται στο πλαίσιο του παραδείγματος. Κατόπιν αιτήματος (2):

  • $cResult = mysqli_query($this->iConnectId, $cQuery);

η μεταβλητή $this->iConnectId είναι η ενεργή σύνδεση βάσης δεδομένων που έχει διαμορφωθεί ως αντικείμενο πολλαπλών χρήσεων.

Το εργαλείο ανάκτησης πίνακα MySQL είναι απλό και ισχυρό, αλλά εξακολουθεί να είναι βολικό να το χρησιμοποιείτε με αντικειμενοστραφή τρόπο.

Αντικείμενο πρόσβασης στη βάση δεδομένων

Η MySQL είναι ένα εξαιρετικά απλό και αποτελεσματικό εργαλείο για την οργάνωση πληροφοριών. Βάσεις Δεδομένα MySQLΣε όλη την περίοδο χρήσης τους, έχουν αποδειχθεί αξιόπιστο και αποτελεσματικό μέσο αποθήκευσης και πρόσβασης δεδομένων.

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

Ο σχεδιασμός ανάκτησης MySQL στην πραγματική πράξη είναι αρκετά επαχθής, ειδικά όταν είναι απαραίτητο να ανακτήσετε πληροφορίες από έναν πίνακα βασικών πληροφοριών, για παράδειγμα, τον πίνακα προσωπικού, και στη συνέχεια να επιλέξετε δεδομένα για υπαλλήλους από άλλους πίνακες:

  • ιστορικό εργασίας;
  • βιογραφικές πληροφορίες;
  • επιτεύγματα παραγωγής·
  • τομέας επαγγελματικής ικανότητας ·
  • άλλα στοιχεία.

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

Επίπεδο σε βάση δεδομένων

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

Γίνεται κλήση σε μια μέθοδο που δημιουργεί αμέσως τον απαιτούμενο πίνακα δεδομένων και οι λειτουργίες σχηματισμού μιας αίτησης, εκτέλεσής της και επεξεργασίας του αποτελέσματος εμπίπτουν στο σώμα αυτής της μεθόδου.

Αυτό είναι πολύ βολικό, και η ανάγκη να γραφτούν δυσκίνητες κατασκευές, δημιουργώντας ένα προηγούμενο για πιθανό σφάλμα, εξαφανίζεται. Ιδιαίτερα σημαντικό: αυτή η προσέγγιση απλοποιεί πιθανές τροποποιήσεις της δομής της βάσης δεδομένων, καθώς δεν υπερβαίνουν το αντικείμενο πρόσβασης στη βάση δεδομένων. Εάν είναι απαραίτητο, θα χρειαστεί να επαναλάβετε μόνο το αντικείμενο πρόσβασης στη βάση δεδομένων και όχι ολόκληρη τη λειτουργικότητα του ιστότοπου.

Είναι ακόμη πιο βολικό να δημιουργείτε αντικείμενα πραγματικού σκοπού πάνω από το αντικείμενο πρόσβασης στη βάση δεδομένων. Για παράδειγμα, μια περιγραφή προσωπικού που έχει τις ακόλουθες ιδιότητες: λίστα, εμφάνιση δεδομένων σε υπάλληλο, αλλαγή κάρτας υπαλλήλου κ.λπ. Τα εργαλεία πρόσβασης δεδομένων κρύβονται στο βάθος των μεθόδων πραγματικών αντικειμένων, γεγονός που απλοποιεί την εργασία του προγραμματιστή και βελτιώνει την ποιότητα του αποτελέσματος.

Ανάκτηση συγκεκριμένου πεδίου αποτελεσμάτων.

Σύνταξη:

Int mysql_result (αποτέλεσμα int, σειρά int [, μικτό πεδίο])

Η συνάρτηση επιστρέφει την τιμή του πεδίου πεδίοστη γραμμή αποτελέσματος με τον αριθμό σειρά. Παράμετρος πεδίομπορεί να καθορίσει όχι μόνο το όνομα του πεδίου, αλλά και τον αριθμό του - τη θέση στην οποία βρισκόταν η στήλη κατά τη δημιουργία του πίνακα, καθώς και το πλήρες όνομα του πεδίου της φόρμας: "όνομα_πίνακα.όνομα_πεδίου". Ωστόσο, συνιστάται να χρησιμοποιείτε τα ονόματα των πεδίων όπου είναι δυνατόν.

Η λειτουργία είναι καθολική: με τη βοήθειά της, μπορείτε να "παρακάμψετε" ολόκληρο το αποτέλεσμα σε ένα κελί. Και παρόλο που αυτό δεν απαγορεύεται, εντούτοις δεν συνιστάται, γιατί mysql_result()λειτουργεί αρκετά αργά.

mysql_fetch_array

Εξάγει την επόμενη εγγραφή από το αποτέλεσμα και την τοποθετεί σε έναν συσχετιστικό πίνακα.

Σύνταξη:

Πίνακας mysql_fetch_array(int αποτέλεσμα [, int result_type])

Λειτουργία mysql_fetch_array()επιστρέφει την επόμενη σειρά του αποτελέσματος με τη μορφή συσχετιστικού πίνακα, όπου κάθε πεδίο συσχετίζεται με ένα στοιχείο με ένα κλειδί που ταιριάζει με το όνομα του πεδίου. Επιπλέον, στοιχεία με αριθμητικά κλειδιά και τιμές που αντιστοιχούν στις τιμές των πεδίων με αυτούς τους δείκτες εγγράφονται στον πίνακα. Στον επιστρεφόμενο πίνακα τοποθετούνται αμέσως μετά τα στοιχεία με «κανονικά» πλήκτρα.

Παράμετρος αποτέλεσμα_τύποςκαθορίζει τον τύπο του πίνακα που επιστρέφεται και μπορεί να λάβει μία από τις ακόλουθες τιμές: MYSQL_NUM, MYSQL_ASSOC, MYSQL_BOTH(Προκαθορισμένο).

Μπορεί να προκύψει το ερώτημα: γιατί χρειάζονται καθόλου αριθμητικοί δείκτες; Η απάντηση είναι απλή: το γεγονός είναι ότι ως αποτέλεσμα της επιλογής, μπορεί στην πραγματικότητα να υπάρχουν πεδία (στην πραγματικότητα, στήλες) με τα ίδια ονόματα, αλλά, κατά συνέπεια, με διαφορετικούς δείκτες. Αυτό συμβαίνει όταν το δείγμα είναι μέσα ΕΠΙΛΕΓΩπαράγονται ταυτόχρονα από πολλούς πίνακες.

Mysql_connect($host, $user, $pass); $result=mysql_db_query("βάση δεδομένων", "επιλογή αναγνωριστικού, όνομα από τον πίνακα"); while($row=mysql_fetch_array($result)) ( echo "id: ".$row["id"]."
"; echo "id: ".$row."
"; echo "name: ".$row["name"]."
"; echo "name: ".$row."
"; ); mysql_free_result($result);

mysql_fetch_row

Γράφει μια καταχώρηση σε έναν αριθμημένο πίνακα.

Σύνταξη:

Πίνακας mysql_fetch_row (αποτέλεσμα int)

Η συνάρτηση επιστρέφει μια λίστα πίνακα με τις τιμές πεδίου της επόμενης γραμμής αποτελεσμάτων αποτέλεσμα. Εάν η ένδειξη τρέχουσας θέσης αποτελέσματος έχει ρυθμιστεί σε τελευταία καταχώρηση(δηλαδή έχουν τελειώσει οι γραμμές), επιστρέφεται το false. Η τρέχουσα θέση μετατοπίζεται στην επόμενη καταχώρηση, άρα στην επόμενη κλήση mysql_fetch_row()θα επιστρέψει την επόμενη σειρά αποτελεσμάτων.

Κάθε πεδίο μιας εγγραφής αποθηκεύεται σε ένα αριθμημένο στοιχείο πίνακα. Η αρίθμηση ξεκινά από το 0.

$r=mysql_query("επιλέξτε * από το OutTable όπου ηλικία

Όπως μπορείτε να δείτε, ο βρόχος θα τελειώσει μόλις τελειώσουν οι γραμμές, π.χ. Οταν mysql_fetch_row()θα επιστρέψει ψευδής.

mysql_fetch_object

Λήψη καταχώρησης στις ιδιότητες ενός αντικειμένου.

Σύνταξη:

Αντικείμενο mysql_fetch_object(int αποτέλεσμα)

Η συνάρτηση επιστρέφει ένα αντικείμενο του οποίου οι ιδιότητες περιέχουν τα πεδία της τρέχουσας εγγραφής. Εάν δεν υπάρχουν άλλες εγγραφές, επιστρέφει ψευδής.

mysql_connect($host, $user, $pass); $result=mysql_db_query("βάση δεδομένων", "επιλογή * από τον πίνακα"); while($rows=mysql_fetch_object($result)) ( echo $rows->id; echo $rows->name; );

mysql_fetch_lengths

Επιστρέφει το μήκος του στοιχείου εισαγωγής.

Σύνταξη:

Πίνακας mysql_fetch_lengths(int αποτέλεσμα)

Λειτουργία mysql_fetch_lengths()επιστρέφει το μήκος της τιμής που λαμβάνεται χρησιμοποιώντας συναρτήσεις mysql_fetch_row(), mysql_fetch_array()ή mysql_fetch_object().

Για παράδειγμα, στο ακόλουθο παράδειγμα:

$arr=mysql_fetch_row($result); $len=mysql_fetch_lengths($result);

πίνακας $lenθα περιέχει το μήκος των αντίστοιχων στοιχείων πίνακα $arr, δηλ. $len=strlen(arr)και τα λοιπά.

mysql_fetch_field

Επιστρέφει πληροφορίες σχετικά με τις ιδιότητες ενός αντικειμένου και το πεδίο μιας εγγραφής.

Σύνταξη:

Αντικείμενο mysql_fetch_field(int αποτέλεσμα [, int field_offset])

Σε μια προαιρετική παράμετρο μετατόπιση_πεδίουκαθορίζεται ο αριθμός του πεδίου του οποίου οι ιδιότητες θέλουμε να αποκτήσουμε. Εάν αυτή η παράμετρος δεν έχει καθοριστεί, κάθε φορά που καλείται η συνάρτηση mysql_fetch_field() επιστρέφονται οι ιδιότητες του επόμενου πεδίου από το σύνολο εγγραφών αποτέλεσμα.

Το επιστρεφόμενο αντικείμενο έχει τις ακόλουθες ιδιότητες:

  • όνομα- όνομα πεδίου
  • τραπέζι- το όνομα του πίνακα στον οποίο ανήκει το πεδίο
  • μέγιστο μήκος- μέγιστο μήκος πεδίου
  • όχι κενό- 1 εάν το πεδίο επιτρέπεται να είναι κενό
  • πρωτεύων κλειδί- 1 εάν το πεδίο είναι βασικό πεδίο
  • μοναδικό_κλειδί- 1 εάν επιτρέπονται μόνο μοναδικές τιμές στο πεδίο
  • πολλαπλό_κλειδί- 1 εάν επιτρέπεται στο πεδίο να έχει διπλότυπες τιμές
  • αριθμητικός- 1 εάν το πεδίο είναι αριθμητικό
  • άμορφη μάζα- 1 εάν το πεδίο είναι τύπου BLOB
  • τύπος- τύπος πεδίου
  • ανυπόγραφο- 1 εάν το πεδίο είναι αριθμητικό χωρίς υπογραφή
  • μηδενική συμπλήρωση- 1 εάν το πεδίο είναι γεμάτο με μηδενικά
mysql_connect($host,$user,$pass); $result=mysql_db_query("βάση δεδομένων", επιλέξτε * από τον πίνακα"); for($i=0;$i "; $param=mysql_fetch_field($result); if(!$param) echo "Δεν υπάρχουν πληροφορίες ιδιοκτησίας!" ; echo " name: $param->όνομα πίνακα: $param->table max_length: $param->max_length not_null: $param->not_null main_key: $param->primary_key unique_key: $param->unique_key multiple_key: $param- > αριθμητικός_πλήκτρος: $param->αριθμητικό blob: $param->τύπος blob: $param->type unsigned: $param->unsigned zerofill: $param->zerofill ";)

mysql_field_seek

Μετακινεί τον κέρσορα στο καθορισμένο πεδίο.

Σύνταξη:

int mysql_field_seek(int αποτέλεσμα, int field_offset)

Αυτό το χαρακτηριστικό είναι περιττό. Τα παρακάτω αποσπάσματα θα είναι ισοδύναμα:

$param=mysql_fetch_field($result, field_offset);

Mysql_field_seek($result, field_offset); $param=mysql_fetch_field($result);

mysql_field_name

Επιστρέφει το όνομα του πεδίου.

Σύνταξη:

Συμβολοσειρά mysql_field_name (int αποτέλεσμα, int filed_index)

Λειτουργία mysql_field_name()επιστρέφει το όνομα του πεδίου που βρίσκεται στο αποτέλεσμα αποτέλεσμαμε ευρετήριο filed_index(η αρίθμηση ξεκινά από το 0).

$result=mysql_query("SELECT id, name from table"); echo mysql_field_name($result,1); // Εκτυπώσεις: όνομα

mysql_field_table

Επιστρέφει το όνομα του πίνακα από τον οποίο ανακτήθηκε το πεδίο.

Σύνταξη:

Συμβολοσειρά mysql_field_table (int αποτέλεσμα, int field_offset)

Επιστρέφει το όνομα του πίνακα από τον οποίο ανακτήθηκε το πεδίο με μετατόπιση μετατόπιση_πεδίουσαν άποτέλεσμα αποτέλεσμα.

mysql_field_len

Επιστρέφει το μήκος του πεδίου.

Σύνταξη:

Int mysql_field_len (int αποτέλεσμα, int filed_offset)

Η συνάρτηση επιστρέφει το μήκος του πεδίου που προκύπτει αποτέλεσμα. Το πεδίο, ως συνήθως, προσδιορίζεται με τον καθορισμό της μετατόπισής του. Το μήκος εδώ δεν σημαίνει το μέγεθος των δεδομένων πεδίου σε byte, αλλά το μέγεθος που καθορίστηκε κατά τη δημιουργία του. Για παράδειγμα, αν το πεδίο είναι τύπου varchar και δημιουργήθηκε (μαζί με τον πίνακα) με type varchar (100), τότε 100 θα επιστραφούν για αυτό.

mysql_field_type

Επιστρέφει τον τύπο συνόλου εγγραφών του αποτελέσματος.

Σύνταξη:

Συμβολοσειρά mysql_field_type (int αποτέλεσμα, int filed_offset)

Αυτή η λειτουργία είναι παρόμοια με mysql_filed_name(), επιστρέφει μόνο όχι το όνομα, αλλά τον τύπο της αντίστοιχης στήλης στο αποτέλεσμα. Θα μπορούσαν να είναι, για παράδειγμα, ενθ, διπλό, πραγματικόςκαι τα λοιπά.

Mysql_connect($host,$user,$pass); mysql_select_db("mydb"); $result=mysql_query("SELECT * FROM tabl"); $fields=mysql_num_fields($result); $rows=mysql_num_rows($result); $i=0; $table=mysql_field_table($result,$i); echo "Ο πίνακας "$table" έχει $fields πεδία και $rows εγγραφές
"; echo "Δομή πίνακα:
"; while($i"; $i++; )

mysql_field_flags

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

Σύνταξη:

συμβολοσειρά mysql_field_flags (int αποτέλεσμα, int field_offset)

Η συμβολοσειρά που επιστράφηκε είναι ένα σύνολο λέξεων που χωρίζονται με κενά, ώστε να μπορείτε να το μετατρέψετε σε πίνακα χρησιμοποιώντας τη συνάρτηση εκραγεί():

$Flags=explode(" ",mysql_field_flags($r,$field_offset));

Πεδία εγγραφής σε MySQLμπορεί να έχει τις ακόλουθες ιδιότητες σημαίας:

  • "not_nul"
  • "πρωτεύων κλειδί"
  • "unique_key"
  • "multiple_key"
  • "άμορφη μάζα"
  • "ανυπόγραφο"
  • "μηδενική συμπλήρωση"
  • "δυάδικος"
  • "enum"
  • "αυτόματη αύξηση"
  • "χρονοσήμανση"

mysql_list_fields

Επιστρέφει μια λίστα πεδίων πίνακα.

Σύνταξη:

Int mysql_list_fields (string dbname, string tblname [,int link_identifier])

Λειτουργία mysql_list_fields()επιστρέφει πληροφορίες για τον καθορισμένο πίνακα tblnameστη βάση δεδομένων bdname, χρησιμοποιώντας το αναγνωριστικό σύνδεσης σύνδεσμος_αναγνωριστικόεάν δοθεί (αλλιώς η τελευταία ανοιχτή σύνδεση). Η τιμή επιστροφής είναι ένα αναγνωριστικό του αποτελέσματος, το οποίο μπορεί να αναλυθεί με κανονικά μέσα. Σε περίπτωση που επιστραφεί το σφάλμα -1, το κείμενο του μηνύματος σφάλματος μπορεί να ληφθεί με τον συνήθη τρόπο.

$link=mysql_connect($host,$user,$pass); $fields=mysql_list_fields("db1", "table", $link); $colums=mysql_num_fields($fields); // αριθμός πεδίων στον πίνακα // Στη συνέχεια, εκτυπώστε τα ονόματα όλων των πεδίων στον πίνακα για ($i=0;$i"; )

mysql_num_fields

Αυτή η συνάρτηση επιστρέφει τον αριθμό των πεδίων σε μια σειρά του αποτελέσματος, π.χ. αριθμός στηλών στο αποτέλεσμα.

Σύνταξη:

int mysql_num_fields(int αποτέλεσμα)

Λόγω των παραπάνω, η συνάρτηση σάς επιτρέπει να προσδιορίσετε την οριζόντια διάσταση του «δισδιάστατου πίνακα αποτελεσμάτων».

mysql_errno

Επιστρέφει τον αριθμό του τελευταίου σφάλματος.

Σύνταξη:

int mysql_errno()

Αυτή η συνάρτηση επιστρέφει τον αριθμό του τελευταίου καταγεγραμμένου σφάλματος ή 0 εάν δεν υπάρχουν σφάλματα.

Αναγνωριστικό σύνδεσμος_αναγνωριστικόμπορεί να μην καθοριστεί εάν έχει δημιουργηθεί μόνο μία σύνδεση κατά την εκτέλεση του σεναρίου.

Mysql_connect("dbname"); echo mysql_errno().": ".mysql_error()."
";

mysql_error

Επιστρέφει ένα μήνυμα σφάλματος.

Σύνταξη:

Συμβολοσειρά mysql_error()

Αυτή η συνάρτηση επιστρέφει μια συμβολοσειρά που περιέχει το κείμενο του μηνύματος σφάλματος ή μια κενή συμβολοσειρά εάν δεν υπήρχαν σφάλματα.

Mysql_connect("dbname"); echo mysql_errno().": ".mysql_error()."
";

$query = "SELECT col1,col2,col3 FROM table WHERE id > 100" $result = _query($query);

για αυτήν την ενέργεια:

Ενώ ($row = mysql_fetch_array($result))( .... )

κάνει αυτό 1 βρόχο (επανάληψη x φορές);

και για αυτό:

$row = mysql_fetch_array($result) foreach($row as $r)( ... )

αυτό κάνει 2 βρόχους (επανάληψη x φορές);

όπου x είναι ο αριθμός των αποτελεσμάτων

ΕΠΕΞΕΡΓΑΣΙΑ:

εντάξει, ευχαριστώ παιδιά, εντάξει, βασικά διατύπωσα αυτή την ερώτηση πολύ, πολύ άσχημα.

εκ των υστέρων θα έπρεπε να ήταν

"Η mysql_fetch_array() επιστρέφει μόνο μία σειρά κάθε φορά που καλείται"

Τώρα είμαι χαρούμενος που η κατανόηση της mysql_fetch_array() ήταν v. Απιστος!

Σας ευχαριστώ για το χρόνο σας!

Υποθέτω ότι η mysql_fetch_array() perfroms loop, οπότε με ενδιαφέρει να χρησιμοποιήσω την while() σε συνδυασμό με αυτήν, εάν αποθηκεύσει τον ένθετο βρόχο.

Οχι. Το mysql_fetch_array απλώς επιστρέφει την επόμενη σειρά του αποτελέσματος και προωθεί τον εσωτερικό δείκτη. Δεν κλείνει το τηλέφωνο. (Εσωτερικά, μπορεί να χρησιμοποιεί ή να μην χρησιμοποιεί κάποιο είδος βρόχου κάπου, αλλά αυτό δεν έχει σημασία.)

Ενώ ($row = mysql_fetch_array($result)) ( ... )

Αυτό κάνει τα εξής:

  1. η σειρά έχει εκχωρηθεί $row
  2. η έκφραση αξιολογείται και εάν αξιολογηθεί ως true, εκτελούνται τα περιεχόμενα του βρόχου
  3. η διαδικασία ξαναρχίζει
$row = mysql_fetch_array($result); foreach ($σειρά ως $r) ( ... )

Αυτό κάνει τα εξής:

  1. Η ανάκτηση του mysql_fetch_array και η επιστροφή της επόμενης σειράς
  2. η σειρά έχει εκχωρηθεί $row
  3. foreach κάνει βρόχους πάνω από τα περιεχόμενα του πίνακα και εκτελεί τα περιεχόμενα του βρόχου όσες φορές υπάρχουν στοιχεία στον πίνακα

Και στις δύο περιπτώσεις το mysql_fetch_array κάνει το ίδιο πράγμα. Γράφεις τόσους κύκλους. Ωστόσο, και τα δύο σχέδια δεν κάνουν το ίδιο πράγμα. Το δεύτερο θα ενεργήσει μόνο σε μία σειρά του αποτελέσματος, ενώ το πρώτο θα επαναληφθεί σε όλες τις σειρές.

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

Για το πρώτο: το πρόγραμμά σας θα κάνει βρόχο μία φορά για κάθε σειρά στο σύνολο αποτελεσμάτων που επιστρέφεται από το ερώτημα. Μπορείτε να γνωρίζετε εκ των προτέρων πόσα αποτελέσματα υπάρχουν χρησιμοποιώντας mysql_num_rows() .

Για το δεύτερο: αυτή τη φορά χρησιμοποιείτε μόνο μία γραμμήσύνολο αποτελεσμάτων και κάνετε κάτι για καθένα από αυτά στήλες. Αυτό κάνει η κατασκευή foreach της γλώσσας: κάνει βρόχο μέσω του σώματος του βρόχου για κάθε καταχώρηση στον πίνακα $row. Ο αριθμός των φορών που το πρόγραμμα θα περάσει από τον βρόχο είναι γνωστός εκ των προτέρων: θα περάσει μία φορά για κάθε στήλη στο σύνολο αποτελεσμάτων (το οποίο προφανώς γνωρίζετε, αλλά αν χρειάζεται να το ορίσετε, μπορείτε να χρησιμοποιήσετε το count($row) ) .

$query = "SELECT col1,col2,col3 FROM table WHERE id > 100" $result = mysql_query($query); if(mysql_num_rows($result)>0) ( while($row = mysql_fetch_array()) //εδώ μπορείςχρησιμοποιήστε πολλές συναρτήσεις όπως mysql_fetch_assoc() και άλλες ( //Επιστρέφει 1 σειρά στη μεταβλητή σας που γίνεται πίνακας και μεταβείτε αυτόματα στην επόμενη συμβολοσειρά αποτελέσματος Echo $row["col1"]."|".Echo $row["col2 "]."|".Echo $row["col2"]; ) )

Ναι, η mysql_fetch_array() επιστρέφει μόνο ένα αποτέλεσμα. Εάν θέλετε να λάβετε περισσότερες από μία σειρές, πρέπει να βάλετε την κλήση συνάρτησης σε βρόχο while.

Δύο παραδείγματα:

Αυτό θα επιστρέψει μόνο την πρώτη σειρά

$row = mysql_fetch_array($result);

Αυτό θα επιστρέψει μία σειρά σε κάθε βρόχο μέχρι να μην υπάρχουν άλλες σειρές στο σύνολο αποτελεσμάτων

while($row = mysql_fetch_array($result)) ( //Κάνε πράγματα με περιεχόμενο της $row )

Πρώτη γραμμή:

$result = mysql_query($query);

επιστροφή πόρου php db.

Δεύτερη σειρά

Ενώ ($row = mysql_fetch_array($result))

Κυκλοφορεί σε όλες τις εγγραφές που επιστρέφονται από το ερώτημα.

Χρησιμοποιήστε το mysql_fetch_assoc
Σε αυτήν την περίπτωση, η συμβολοσειρά έχει ζεύγη τιμών κλειδιού =>.
Ενώ απλά βάλε αυτό:
print_r($row) και θα καταλάβετε
Εάν χρησιμοποιείτε mysql_fetch_assoc η μορφή συμβολοσειράς θα είναι:

$row["column1_name"] = στήλη1_τιμή; $row["column2_name"] = στήλη2_τιμή;

Για αυτό:

$row = mysql_fetch_assoc($result) foreach ($row as $columnName => $columnValue) ( ​​... )

Θα λάβετε την πρώτη σειρά από το ερώτημα και θα επαναλάβετε όλες τις στήλες στο πρώτο αποτέλεσμα του ερωτήματος.