[Résolu] SQL query OK en local mais pas chez free - -> besoin ID primary key en auto-indent

Slt, j’ai ce bout de code qui fonctionne trés bien en local (MySQL 3.23.49-max-nt):

$query = mysql_query("SELECT nb_downloads FROM downloads WHERE fichier like 'ezmb_b0.1.zip'");
              $a = mysql_result($query,0,0);
              echo "Téléchargé $a fois.<br><br>";
              echo "<a href='/downloads/downloads.php?file=ezmb_b0.1.zip'>>> télécharger ezmb_b0.1.zip <<</a>";

Par contre, dès que j’upload, la requette echoue (MySQL 4.0.22)

Qu’est ce qui peut cocher?

MySQL 3.23.49-max-n

en ajoutant un die apres ta requete, il t’en dit pas un peu plus sur l’erreur rencontrée lorsque tu execute ton script à distance ?

Il me met qu’au moment d’exécuter mysql_result il n’accède pas à la ligne 0.

En fouillant un peut, c’est la requete qui me renvoi rien, comme si il n’y avait pas de résultat. Or, ce n’est pas le cas…

Le champ ‘fichier’ de ma base contient bien un nom ‘ezmb_b0.1.zip’ et le champ ‘nb_downloads’ existe.

$query = mysql_query("SELECT COUNT(nb_downloads) FROM downloads WHERE fichier = 'ezmb_b0.1.zip'");
              $a = mysql_fetch_row($query);
              echo "Téléchargé ".$a[0]." fois.<br><br>";
              echo "<a href='/downloads/downloads.php?file=ezmb_b0.1.zip'>>> télécharger ezmb_b0.1.zip <<</a>";

En passant par un count peut-etre ?

Bah, le count va me compter le nombre de nb_download, or moi je veux le contenu.

En fait, pour limiter les enregistrements, j’ai un champ pour le nom de fichier, un autre pour le nbre de dl

ok…

Alors en fait, tu as UN enregistrement par fichier téléchargé, et cet enregistrement à deux entrées, le nom du fichier et le nombre de téléchargement (que tu veux extraire).

Bien là, un simple


$query = mysql_query("SELECT nb_downloads FROM downloads WHERE fichier = 'ezmb_b0.1.zip'");
             $a = mysql_fetch_row($query);
             echo "Téléchargé ".$a[0]." fois.<br><br>";
             echo "<a href='/downloads/downloads.php?file=ezmb_b0.1.zip'>>> télécharger ezmb_b0.1.zip <<</a>";

devrait fonctionner sans problème :neutre:

Bon, en analysant la requete, il me met que la clause WHERE est impossible

Et au passage, je l’ai tenté avec:

SELECT * FROM downloads WHERE ‘fichier’ like ‘%’ -> OK
SELECT * FROM downloads WHARE ‘gichier’ like ‘%ezmb%’ -> PAS OK

Je viens d’essayer en local, sur ma base free, et sur ma base celeonet… les trois fonctionnent parfaitement.

Je ne sais que te dire là :neutre:

Visiblement c’est bien le nom du fichier qui lui pose problème.

Le champs de ta table, c’est du varchar ?

Bon, je viens de trouver…

Ca vient tout simplement du fait que le serveur mysql de free nécessitte une clé primaire autoincrémentée…

J’avait décidé d’utilisé le nom de fichier comme clé primaire, vu que je propose pas deux fois le même fichier en dl, mais MySQL en veut pas. Problème résolu donc en ajoutant un champ.

Bizarre tout de même

Merci mille fois oximini d’avoir passé du temps à comprendre ce qu’il m’arrivait!

C’était avec plaisir :jap:

Mais je comprend pas pourquoi sur ta base ça fonctionne pas. Comme tu m’as pas parlé d’ID par exemple (en clé primaire auto-incrémenté), j’ai mis comme toi “fichier” en clé primaire (non incrémenté) et ça fonctionnait tout bien :neutre:

Voilà bien une bizarrerie de free encore :lol: