MySQL: mysql_fetch_array();

Διάφορα για Websites, οδηγοί και συμβουλές για να φτιάξετε την δικιά σας ιστοσελίδα και να την ανεβάσετε στο Ίντερνετ. Επίσης, συζητήσεις για CMSs, Forums, php/asp scripts.
Απάντηση
Virus•Hacker•Kontos
Δημοσιεύσεις: 170
Εγγραφή: Πέμ Νοέμ 26, 2009 9:59 pm

MySQL: mysql_fetch_array();

Δημοσίευση από Virus•Hacker•Kontos »

Ρε παιδια εδω και εβδομαδες προσπαθω να καταλαβω σε μεγαλο βαθμο αυτο το παράδειγμα κωδικα που εχω βρει.

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

<?php
$result = mysql_query("SELECT * FROM Persons
WHERE FirstName='Peter'");
//Μεχρι εδω ειμαι ΟΚ
//Περναει σε μια μεταβλητη ολες τις τιμες (απο το table Persons)σε οποια στηλη το firstname ειναι Peter

while($row = mysql_fetch_array($result)) // To while τη ρολο βαραει? Μονο σε περιπτωση που υπαρχουν περισσοτερες απο 2 σειρες με firstname Peter, σωστα?
  {
  echo $row['FirstName'] . " " . $row['LastName']; // Το FirstName και το LastName οριζονται απο την MySQL στη χρηση οταν ειναι row η ειναι κατι σαν πινακας με ονοματα αντι για αριθμους στην μεταβλητη row?
  echo "<br />";
  }
?> 
Και επιπλεον, θελω λιγη βοηθεια να φτιαξω ενα login system με βαση αυτη την εντολη, αν και πιστευω πως μετα απο την απαντηση σας θα το βρω μονος μου, αλλα μεχρι τωρα ολες οι προσπαθειες καταληγουν σε error.
DFS Hole:
Spoiler: show
http://virushackerwhizkid.blogspot.com/ ... ze-it.html
DFS = Deep Freeze System
Είμαι σίγουρος ότι το πιστέψατε.
chris
Δημοσιεύσεις: 528
Εγγραφή: Κυρ Δεκ 28, 2008 9:27 am

Re: MySQL: mysql_fetch_array();

Δημοσίευση από chris »

Θα σου πω αναλυτικότερα το μεσημέρι, δες αυτό:
http://php.net/manual/en/function.mysql-fetch-array.php
Μετα από 397 δημοσιεύσεις, έβαλα και υπογραφή.
chris
Δημοσιεύσεις: 528
Εγγραφή: Κυρ Δεκ 28, 2008 9:27 am

Re: MySQL: mysql_fetch_array();

Δημοσίευση από chris »

Πρώτα από όλα η mysql_query επιστρέφει ένα resource που εσύ κρατάς στο result.

Το while έπειτα εκτελείται για όλες τις σειρές που πληρούσαν τα κρητήρια του mysql_query. Η mysql_fetch_array επιστρέφει κάθε φορά σαν πίνακα την επόμενη εγγραφή. Τα FirstName και LastName είναι τα ονόματα των στηλών. Σε λίγο σου στέλνω το login system του ERMIS.

Edit: έφτασε...
Το παρακάτω login system είναι από ένα απλό σύστημα private file hosting.

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

//Declare some variables
$tbl_name="users";
$username  = $_POST['username'];
$password = $_POST['password'];

//Connect and select the database 
$db = mysql_connect("$SQL_Host","$SQL_User","$SQL_Pass") or die("Could not connect to database!");
mysql_select_db($SQL_DBName,$db) or die("Could not find database!");

//Prepare and sanitize the query
$query=sprintf("SELECT * FROM %s WHERE username='%s' AND password = '%s'",mysql_real_escape_string($tbl_name),mysql_real_escape_string($username),mysql_real_escape_string($password));

//Send the query to SQL
$answer= mysql_query($query, $db);

//Count the responses
if($answer) $users= mysql_num_rows($answer);
else $users=0;

//Check whether there was at least 1 match
if($users>=1)
{
	//Declare some variables
	$row = mysql_fetch_array($answer);
	$priv = $row['privileges'];
	
	//Register the session and redirect to login_success.php
	session_start();
	$_SESSION['username']=$username;
	$_SESSION['privileges']=$priv;
	header("location:successful_login.php");
	exit;
}
else
{
	//If the login was incorrect redict to failed_login.php  
	header("location:failed_login.php");
	exit;
}
Η mysql_num_rows() απλά επιστρέφει τον αριθμό των εγγραφών που βρέθηκαν.
Αν έχεις απορίες πες μου.
Μετα από 397 δημοσιεύσεις, έβαλα και υπογραφή.
Virus•Hacker•Kontos
Δημοσιεύσεις: 170
Εγγραφή: Πέμ Νοέμ 26, 2009 9:59 pm

Re: MySQL: mysql_fetch_array();

Δημοσίευση από Virus•Hacker•Kontos »

οκ, ευχαριστω παρα πολυ... τωρα πλεον το καταλαβα... και ευχαριστω και για το login system, που ηταν το παραδειγμα για να καταλαβω...
DFS Hole:
Spoiler: show
http://virushackerwhizkid.blogspot.com/ ... ze-it.html
DFS = Deep Freeze System
Είμαι σίγουρος ότι το πιστέψατε.
dorathy
Δημοσιεύσεις: 1
Εγγραφή: Παρ Αύγ 13, 2010 7:35 am

Re: MySQL: mysql_fetch_array();

Δημοσίευση από dorathy »

thanks friend.
pman
Δημοσιεύσεις: 419
Εγγραφή: Τρί Φεβ 10, 2009 9:49 pm

Re: MySQL: mysql_fetch_array();

Δημοσίευση από pman »

//Prepare and sanitize the query
$query=sprintf("SELECT * FROM %s WHERE username='%s' AND password = '%s'",mysql_real_escape_string($tbl_name),mysql_real_escape_string($username),mysql_real_escape_string($password));
Χωρίς σιγουριά για αυτό που θα πω αλλά έστω εάν στο query δεν έβαζες το WHERE για να το ορισείς να ψάξει συγκεκριμένα και απλώς μετά κατά το while έβαζες
ένα if( $username == '$tbl_name' && $password=='$password') δεν θα ήσουν οκ?
chris
Δημοσιεύσεις: 528
Εγγραφή: Κυρ Δεκ 28, 2008 9:27 am

Re: MySQL: mysql_fetch_array();

Δημοσίευση από chris »

sotiris έγραψε: Χωρίς σιγουριά για αυτό που θα πω αλλά έστω εάν στο query δεν έβαζες το WHERE για να το ορισείς να ψάξει συγκεκριμένα και απλώς μετά κατά το while έβαζες
ένα if( $username == '$tbl_name' && $password=='$password') δεν θα ήσουν οκ?
ναι, όντως, θα ήταν το ίδιο πράγμα...

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

 if($row['username']==$username && $row['password'] == $password) 
Άλλα γιατί; Για αποφυγή injections υπάρχουν άλλοι τρόποι... Αν έκανα κάτι τέτοιο θα έκανα ουσιαστικά γραμμική αναζήτηση. Ελπίζω και πιστεύω πως το MySQL κάνει κάτι καλύτερο...
Μετα από 397 δημοσιεύσεις, έβαλα και υπογραφή.
Memas
Δημοσιεύσεις: 87
Εγγραφή: Παρ Δεκ 31, 2010 4:13 pm
Επικοινωνία:

Re: MySQL: mysql_fetch_array();

Δημοσίευση από Memas »

Για να μην κάνω καινούργιο topic ρωτάω εδώ... :lol:
Έχω πρόβλημε με MySQL encoding καθώς θέλω να βάλω ελληνικά μέσα τις εγγραφές αλλά όταν προσπαθώ να τις τυπώσε μου εμφανίζονται σαν (?). Ξέρει κανείς τι να κάνω;;; :D
Άβαταρ μέλους
kernelpanic
Δημοσιεύσεις: 404
Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
Τοποθεσία: Αθήνα

Re: MySQL: mysql_fetch_array();

Δημοσίευση από kernelpanic »

Κοίτα τα charset των πεδίων που θα έχουν ελληνικά μέσα.
Επίσης κοίτα με τι charset εισάγεις τα δεδομένα.
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
stathis
Site Admin
Δημοσιεύσεις: 381
Εγγραφή: Κυρ Δεκ 14, 2008 6:01 pm
Τοποθεσία: Αθήνα
Επικοινωνία:

Re: MySQL: mysql_fetch_array();

Δημοσίευση από stathis »

Βάλε τα πεδία χαρακτήρων και τα tables σου utf8_bin ή utf8_general_ci
Άβαταρ μέλους
kernelpanic
Δημοσιεύσεις: 404
Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
Τοποθεσία: Αθήνα

Re: MySQL: mysql_fetch_array();

Δημοσίευση από kernelpanic »

stathis έγραψε:Βάλε τα πεδία χαρακτήρων και τα tables σου utf8_bin ή utf8_general_ci
Αυτό, και επόμενη φορά search the fantastic web. ;)
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
Απάντηση