Ερώτηση σχετικά με ένα SELECT Statement.

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

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

Απάντηση
redion
Δημοσιεύσεις: 34
Εγγραφή: 08 Ιουν 2011 00:09
Επικοινωνία:

Ερώτηση σχετικά με ένα SELECT Statement.

Δημοσίευση από redion » 05 Ιούλ 2011 21:33

Σας χαιρετώ όλους!

Έχω μια ερώτηση σχετικά με ένα SELECT Statement και προσπαθώ να βρώ την πιο σύντομη διαδρομή.

Ας υποθέσουμε ότι έχουμε απλά:

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

$fieldvalue1=$_POST['Name'];
$fieldvalue2=$_POST['Surname'];

$query=mysql_query("SELECT * FROM $table WHERE Name='$fieldvalue1' AND Surname='$fieldvalue2' ");
Και η ερώτηση είναι τι μπορούμε να κάνουμε αν το $fieldvalue1 είναι empty, τότε να διαλέξει μόνο όπου Surname='$fieldvalue2' ?

Ευχαριστώ.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Ερώτηση σχετικά με ένα SELECT Statement.

Δημοσίευση από korgr » 05 Ιούλ 2011 22:42

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

$query=mysql_query("SELECT * FROM $table WHERE Name='$fieldvalue1' OR Surname='$fieldvalue2' ");

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Ερώτηση σχετικά με ένα SELECT Statement.

Δημοσίευση από dva_dev » 05 Ιούλ 2011 23:26

Καλύτερα να το ελέγχεις με php κώδικα και να στέλνεις για εκτέλεση το ανάλογο query.
π.χ.

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

$fieldvalue1=$_POST['Name'];
$fieldvalue2=$_POST['Surname'];

if ($empty($fieldvalue1)) {
    $query=mysql_query("SELECT * FROM $table WHERE Surname='$fieldvalue2' ");
}
else
{
    $query=mysql_query("SELECT * FROM $table WHERE Name='$fieldvalue1' AND Surname='$fieldvalue2' ");
}

redion
Δημοσιεύσεις: 34
Εγγραφή: 08 Ιουν 2011 00:09
Επικοινωνία:

Ερώτηση σχετικά με ένα SELECT Statement.

Δημοσίευση από redion » 06 Ιούλ 2011 20:50

korgr έγραψε:

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

$query=mysql_query("SELECT * FROM $table WHERE Name='$fieldvalue1' OR Surname='$fieldvalue2' ");
Και όμως τόσο απλό....hahaha :)

Είναι σίγουρο όμως ότι δε θα κάνει αναζήτηση όπου Name="" και το πιθανότερο να μου επιστρέψει ένα άδειο table ?...θα το δοκιμάσω όμως....thanks

redion
Δημοσιεύσεις: 34
Εγγραφή: 08 Ιουν 2011 00:09
Επικοινωνία:

Ερώτηση σχετικά με ένα SELECT Statement.

Δημοσίευση από redion » 06 Ιούλ 2011 20:52

dva_dev έγραψε:Καλύτερα να το ελέγχεις με php κώδικα και να στέλνεις για εκτέλεση το ανάλογο query.
π.χ.

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

$fieldvalue1=$_POST['Name'];
$fieldvalue2=$_POST['Surname'];

if ($empty($fieldvalue1)) {
    $query=mysql_query("SELECT * FROM $table WHERE Surname='$fieldvalue2' ");
}
else
{
    $query=mysql_query("SELECT * FROM $table WHERE Name='$fieldvalue1' AND Surname='$fieldvalue2' ");
}
Αυτή είναι η καλύτερη λύση άμα έχεις ελάχιστα fields, όμως έχω πολλά και θα πρέπει να κάνω πολλά if, θα το δοκιμάσω όμως... Thanks :)

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Ερώτηση σχετικά με ένα SELECT Statement.

Δημοσίευση από dva_dev » 07 Ιούλ 2011 00:21

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

redion
Δημοσιεύσεις: 34
Εγγραφή: 08 Ιουν 2011 00:09
Επικοινωνία:

Ερώτηση σχετικά με ένα SELECT Statement.

Δημοσίευση από redion » 07 Ιούλ 2011 03:48

dva_dev έγραψε:Αν δεν ρωτάς αυτό που θέλεις, η απάντηση που θα πάρεις ίσως δεν θα είναι αυτή που χρειάζεσαι.
Η ερώτηση μου με λίγα λόγια ήταν... αν σε ένα SELECT query,όπου

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

WHERE field1=variable1 AND field2=variable2 AND field3=variable3
έχουμε μία άδεια μεταβλητή π.χ την variable2, πως γίνεται να παραλήψουμε από την αναζήτηση το field2=variable2 ?

Με OR που μου πρότεινε ο "korgr",π.χ field1=variable1 OR field2=variable2,
όταν και τα δύο fields έχουν κάποια τιμή τότε το αποτέλεσμα βγαίνει με βάση μόνο το πρώτο field στη σειρά, απ'ότι κατάλαβα.

Μάλλον θα το κάνω με πολλαπλά "if".

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Ερώτηση σχετικά με ένα SELECT Statement.

Δημοσίευση από dva_dev » 07 Ιούλ 2011 06:30

Με πολλαπλά if αλλά όχι έτσι. Κάπως σαν το παρακάτω είναι λίγο καλύτερο (και από κει και πέρα το βελτιώνεις/γενικεύεις κι άλλο).

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

$field1=$_POST['var1']; 
$field2=$_POST['var2']; 
... //100 fields akoma
$fieldN=$_POST['varN']; 

$sel = "SELECT * FROM $table WHERE ";
$cond = '(1=1)';
if ($empty($field1)) { 
    $cond .= " and dbField1='$field1' "); 
} 
if ($empty($field2)) { 
    $cond .= " and dbField2='$field2' "); 
} 
...
if ($empty($fieldN)) { 
    $cond .= " and dbFieldN='$fieldN' "); 
} 

$query=mysql_query($sel . $cond);

redion
Δημοσιεύσεις: 34
Εγγραφή: 08 Ιουν 2011 00:09
Επικοινωνία:

Ερώτηση σχετικά με ένα SELECT Statement.

Δημοσίευση από redion » 07 Ιούλ 2011 11:59

dva_dev έγραψε:Με πολλαπλά if αλλά όχι έτσι. Κάπως σαν το παρακάτω είναι λίγο καλύτερο (και από κει και πέρα το βελτιώνεις/γενικεύεις κι άλλο).

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

$field1=$_POST['var1']; 
$field2=$_POST['var2']; 
... //100 fields akoma
$fieldN=$_POST['varN']; 

$sel = "SELECT * FROM $table WHERE ";
$cond = '(1=1)';
if ($empty($field1)) { 
    $cond .= " and dbField1='$field1' "); 
} 
if ($empty($field2)) { 
    $cond .= " and dbField2='$field2' "); 
} 
...
if ($empty($fieldN)) { 
    $cond .= " and dbFieldN='$fieldN' "); 
} 

$query=mysql_query($sel . $cond);
Δε πηγαίνει καλύτερα:

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

if ( ! $empty($fieldΝ)) { 
    $cond .= " and dbFieldΝ='$fieldΝ' "); 
...δηλαδή "not empty".

Σε ευχαριστώ πολύ για τη βοήθεια σου ! :)

Απάντηση

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

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

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