2010-11-17 7 views
0

J'utilise PHP5 et MySQL, je me demandais s'il y avait un moyen de définir automatiquement les variables au lieu de tous les écrire?Une meilleure façon de définir les variables à partir d'une requête de base de données

Je suis actuellement en utilisant un code tel que ceci:

$sSQL = "SELECT * FROM myTable"; 
$result = mysqli_query($dbi,$SQL); 

if(mysqli_num_rows($result)==0){} 
else 
{ 
    //loop and set array 
    while ($row = mysqli_fetch_assoc($result)) { 
    $field1 = $row['field1']; 
    $field2 = $row['field2']; 
    $field3 = $row['field3']; 
    } 

    $newArray[] = (array(
     "field1" => "$field1", 
     "field2" => "$field2", 
     "field3" => "$field3" 
    )); 

Fondamentalement, je suis en train les variables du même nom que les noms de champs SQL, puis définir un tableau au même. Je me demandais s'il y avait une façon plus rapide de faire cela en écrivant tous les noms à la main? (Je sais aussi que la sélection est mauvaise, elle est juste là pour l'illustration!)

Répondre

2

Une option consiste à utiliser des noms de champs explicites dans la requête SQL et à affecter directement chaque ligne de résultat. En outre, la sélection des colonnes avec *reduces performance et rend l'intention de votre requête moins claire.

$sSQL = "SELECT field1, field2, field3 FROM myTable"; 

// other code 

while ($row = mysqli_fetch_assoc($result)) { 
    $newArray[] = $row; 
} 

Cependant, si vous voulez simplement des variables à créer dynamiquement alors extract() pourrait faire l'affaire.

0

Pourquoi écrivez-vous "mysqli"? Pourquoi le je?

Et à propos de votre question: La façon la plus courante (et même la plus simple) est via mysql_fetch_object et ensuite vous décrire une var comme $ var = $ row-> FIELD;

mysql_fetch_assoc est une autre caractéristique possible, mais le premier ne fonctionne beaucoup mieux que assoc ...

+1

Vous devriez vraiment lire sur http://php.net/manual/en/book.mysqli.php – stillstanding

Questions connexes