J'ai un petit problème que je ne comprends pas. J'ai une dB qui a un propriétaire et un type (et plus sûr). Je souhaite obtenir une liste de toutes les valeurs de type qui possède le propriétaire égal à l'utilisateur actuel, mais je n'obtiens que deux résultat imprime: p> et p> imprime: p> et le résultat devrait être quelque chose comme 19, 19, 18, 17, 16 dans un tableau. C'est tous les types qui me sont aussi définis que le propriétaire. P> J'ai ce fonctionnement maintenant: p> Ici, je imprime toutes les valeurs correctement, mais je dois créer un tableau avec toutes les valeurs. Je pouvais utiliser Array_Push, mais il y a plus de meilleure façon de le faire. Je pensais avoir toutes les valeurs de type avec une simple requête MySQL. p> p>
7 Réponses :
Vous avez besoin de itérer à travers ...
$typeArray = array();
$query = "select * from whatever";
$result = mysql_query($query);
if ($result) {
while ($record = mysql_fetch_array($results)) $typeArray[] = $record['type'];
}
$type_array = array();
while($row = mysql_fetch_assoc($result)) {
$type_array[] = $row['type'];
}
while($row = mysql_fetch_assoc($result)) {
echo $row['type'];
}
Son code fait déjà cela. Il veut qu'il devienne un tableau. L'écho ne va pas résoudre ce problème.
Très souvent, cela se fait dans un aperçu des exemples dans le documentation . p> Le renvoie une gamme de chaînes qui correspond à la rangée extraite, ou false si il n'y a plus de lignes. P>
blockQuote> C'est pourquoi le Il semble que que à l'aide de MySQL_BOTH (par défaut), vous obtiendrez un tableau avec des indices associatifs et numériques. P>
blockQuote> Votre exemple montre le mieux, vous obtenez la même valeur tandis que code> boucle: mysql_fetch _ * code> obtiendra toujours l'élément suivant em> de l'ensemble de résultats: P>
pendant que code> boucles fonctionne. S'il n'y a aucune ligne de lignes $ rangée code> sera false code> et le pendant code> la boucle existe. P> mysql_fetch_array code> obtient plus d'une ligne, car par défaut, il obtient le résultat que normal et em> comme valeur associative : p>
18 code> et vous pouvez y accéder via $ V [0] code> ou $ v ['type'] code>. p> p>
Vous pouvez également rendre la vie plus facile à utiliser un wrapper, par ex. avec Adodb:
$myarray=$db->GetCol("SELECT type FROM cars ".
"WHERE owner=? and selling=0",
array($_SESSION['username']));
THE CORRECT WAY ************************ THE CORRECT WAY while($rows[] = mysqli_fetch_assoc($result)); array_pop($rows); // pop the last row off, which is an empty row
OUI! C'est la bonne façon.
Il n'utilise pas mysqli il utilise hérité mysql
Legacy mysql? Vous devez signifier MySQL obsolète.
Yep Old MySQL - plus vieux que la version que la réponse concernée
Vous voudrez peut-être consulter l'article d'injection SQL sur Wikipedia. Regardez sous la partie "Conversion hexadécimale" pour trouver une petite fonction pour effectuer vos commandes SQL et renvoyer une matrice avec les informations dedans. P>
https://fr.wikipedia.org/wiki/sql_injection P>
J'ai écrit la fonction dosql () car je me suis fatigué d'avoir mes commandes SQL exécutant partout sur la place, oubliant de vérifier les erreurs et de connecter toutes mes commandes à un fichier journal pour une visualisation ultérieure si nécessaire . La routine est gratuite pour celui qui veut l'utiliser pour le but. En fait, j'ai un peu étendu la fonction parce que je voulais qu'il fasse plus, mais cette fonction de base est un bon point de départ pour récupérer la sortie d'un appel SQL. P>