Bonjour !
Je rencontre un problème lorsque j'essaye de retrouver la clé primaire via la fonction php mysql_fetch_field.
Dans un cas très simple, tout marche bien, la valeur "primary_key" est bien à 1 pour mon champ id, et à 0 pour les autres.
Lorsque je classe mes résultats par id, tout marche encore comme il faut.
MAIS, à ma grande surprise, lorsque je classe mes resultats par "rand()", la valeur "primary_key" est à 0 pour tous les champs, y compris id...
Je vous laisse un petit extrait de code qui montre le problème.
Est-ce que c'est un bug ? Cela vient-il de la fonction php, ou de mysql ? (php 5.3.2, mysql 5.1.51)
Existe-t-il une manière de quand même obtenir le résultat souhaité sans devoir faire une requête spécifique ?
Merci beaucoup d'avance !
Olivier
<?php
mysql_connect('127.0.0.1', 'NAME', 'PASS');
mysql_select_db('DATABASE');
echo "<h3>Unordered</h3>";
showStructure('SELECT * FROM sample');
echo "<h3>Order by id</h3>";
showStructure('SELECT * FROM sample ORDER BY id');
echo "<h3>Order by rand()</h3>";
showStructure('SELECT * FROM sample ORDER BY rand()');
function showStructure($query){
$result = mysql_query($query);
$i = 0;
while ($i < mysql_num_fields($result)) {
$meta = mysql_fetch_field($result, $i);
echo " name: $meta->name
primary_key: $meta->primary_key";
$i++;
}
}
?> |
Qui donne :
Unordered
name: id
primary_key: 1
name: title
primary_key: 0
Order by id
name: id
primary_key: 1
name: title
primary_key: 0
Order by rand()
name: id
primary_key: 0
name: title
primary_key: 0