2011-10-07 4 views
0

J'ai vu là-bas il existe de nombreuses façons de mettre les résultats d'une requête SQL dans un format utilisable (c'est-à-dire, des variables).obtenir des résultats de requête SQL

Si j'ai une requête SQL ciblée que je sais sera de retour un ensemble de valeurs attendues, permet de dire l'interrogation d'un numéro de client pour extraire des données, ville, état, prénom et nom, etc ..

code exemple suivant:

$example = '50'; 
$result = mysql_query("SELECT * FROM customers WHERE customer_ID = '$example'",$db); 
while ($row = mysql_fetch_assoc($result)) { 
    foreach ($row as $col => $val) { 
    if ($col == 'firstname') { 
     $customerfirstname = $val; 
    } 
    } 
} 

ou d'une autre façon:

$result = mysql_query("SELECT * FROM customers WHERE customer_ID = '$example'",$db); 
$myResultArray = array(); 

while ($row = mysql_fetch_assoc($result)) 
    $myResultArray = $row; 

    foreach ($myResultArray as $val) { 
    $customerfirstname = $val['firstname']; 
    } 

C'est juste deux que je pouvais penser.

L'une des méthodes ci-dessus est-elle préférable à l'autre? Si oui, pourquoi?

Existe-t-il une autre méthode qui soit encore plus efficace que ces deux méthodes?

+2

Veuillez marquer la question dans la langue que vous utilisez. – Oded

Répondre

3

Aucun des deux n'est préféré. Les foreach sont superflus.

Puisque vous connaissez les noms des champs dont vous avez besoin, vous pouvez juste faire:

while ($row = mysql_fetch_assoc($result)) { 
    $customerfirstname = $row['firstname']; 
} 

Si vous avez besoin d'appliquer une condition pour une raison quelconque, vous pouvez tester l'existence du champ dans le tableau:

while ($row = mysql_fetch_assoc($result)) { 
    if (isset($row['firstname'])) { 
     $customerfirstname = $row['firstname']; 
    } 
} 

Enfin, puisque vous semblez sélectionner par clé primaire, la boucle while est également inutile:

if ($row = mysql_fetch_assoc($result)) { 
    $customerfirstname = $row['firstname']; 
} 
0

J'ai utilisé le premier exemple que vous avez posé dans chaque site Web que j'ai fait qui nécessite une base de données et il ne m'a pas encore échoué. Pour autant que l'un soit meilleur que l'autre, je dirais non. C'est juste une question de goût.

0

Il y a plusieurs façons. En voici un rapide, mais je préférerais le configurer en utilisant un DTO et y accéder de cette façon ... cela fonctionnera bien pour votre question.

$query = "SELECT first_name, last_name, city FROM customers WHERE customer_id = '$example'"; 
$result = mysql_query($query); 

// If you are expecting only one row of data, then use this: 
list($first_name, $last_name, $city) = mysql_fetch_row($result); 

//several rows: 
while(list($first_name, $last_name, $city) = mysql_fetch_row($result)){ 
    echo $first_name; 
} 
0

me semble manquer quelque chose ...

Pourquoi pas?

$result = mysql_query("SELECT * FROM customers WHERE customer_ID = '$example'",$db); 
while ($row = mysql_fetch_assoc($result)) { 
    $customerfirstname = $row['firstname']; 
} 

Dans le premier exemple?

Questions connexes