CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet résolu : Insert into => Erreur ressource #4

DébutPage précedente
1
Page suivantePage suivante
dlefebure dlefebure
MP
Niveau 1
24 avril 2017 à 10:19:19

Bonjour,

J'obtiens systématiquement une erreur de MySQL (Ressource id #4) lorsque je tente d'insérer:

$sql = "INSERT INTO classement (num_jeu, j1, j2, j3, j4) VALUES ('$num_jeu', '$j1', '$j2', '$j3', $j4)";

Un echo de ces variables ne pose pas de problème pour sa part. Je suppose qu'il s'agit d'un problème de syntaxe, mais je crois les avoir toutes essayées.

L'un d'entre-vous pourrait-il m'aider ?

Merci beaucoup par avance.
dl

Bartoniz Bartoniz
MP
Niveau 9
24 avril 2017 à 10:48:15

Salut, il me semble syntaxe correct est :

$sql = "INSERT INTO classement (num_jeu, j1, j2, j3, j4) VALUES ('" .$num_jeu. "', '" .$j1. "', '" .$j2. "', '" . $j3. "', '" *$j4."')";

Message édité le 24 avril 2017 à 10:48:43 par Bartoniz
GrandeGuerre GrandeGuerre
MP
Niveau 11
24 avril 2017 à 10:57:37

Les variables sont entre apostrophes donc déjà il prendra pas leur valeur.
Et la variable 4 est la seule sans apostrophe. C'est sûrement lié

arsh222 arsh222
MP
Niveau 10
24 avril 2017 à 11:03:26

Le 24 avril 2017 à 10:57:37 GrandeGuerre a écrit :
Les variables sont entre apostrophes donc déjà il prendra pas leur valeur.

(je pense bien que si)

dlefebure dlefebure
MP
Niveau 1
24 avril 2017 à 11:55:44

Merci pour votre réponse.

Sorry pour le $J4, sans apostrophe, c'est une erreur de recopiage. Il l'était à l'origine.

J'ai essayé la syntaxe proposée par Bartoniz, qui m'apportait quelque chose de nouveau par rapport à ce que j'ai déjà essayé, c'est à dire les espaces entre l'apostrophe et le point de concatenation. => Résultat: Erreur Ressource #3 (c'était #4 avant cela)...

(mon but est évidemment d'arriver à erreur #0 ;-))

Merci pour votre aide.

GrandeGuerre GrandeGuerre
MP
Niveau 11
24 avril 2017 à 12:07:05

Le 24 avril 2017 à 11:03:26 arsh222 a écrit :

Le 24 avril 2017 à 10:57:37 GrandeGuerre a écrit :
Les variables sont entre apostrophes donc déjà il prendra pas leur valeur.

(je pense bien que si)

Sauf erreur de ma part, une variable entre apostrophes n'est pas traitée comme une variable mais comme du texte.
http://stackoverflow.com/questions/3446216/what-is-the-difference-between-single-quoted-and-double-quoted-strings-in-php

Bartoniz Bartoniz
MP
Niveau 9
24 avril 2017 à 13:35:57

C'est possible que je m'emmele les pinceaux car j'ai la syntaxe Java en tête ^^, car en Java c'est :
" SELECT * FROM test WHERE a = ' " +variable+ " ' ";
Du coup essaye d'enlever les ' ;)

-[Franckyi]- -[Franckyi]-
MP
Niveau 10
24 avril 2017 à 14:01:02

Aucun moyen de passer par une requête préparée ? Ça te faciliterai vraiment la tâche.

dlefebure dlefebure
MP
Niveau 1
24 avril 2017 à 14:41:15

J'avoue ignorer ce qu'est une "requête préparée" (j'imagine sans les variables?). De manière plus complète, voici où j'en suis:

Dans du contenu stocké dans ma première table de ma BDD (MySQL), je récupère des textes afin de savoir combien de fois 4 joueurs sont cités

$requete = mysql_query("SELECT * FROM jeu_de_bois");

While($ligne = mysql_fetch_assoc($requete))

{ 
	$num_jeu = $ligne[num_jeu];
	$contenu_texte = $ligne[contenu_texte];

Pour cela pas de problème. Je continue ensuite, toujours dans ma boucle de While afin de déclarer:

$j1 = substr_count($contenu_texte, 'Antoine');
$j2 = substr_count($contenu_texte, 'Fabrice');
$j3 = substr_count($contenu_texte, 'Valérie');
$j4 = substr_count($contenu_texte, 'Martine');

Jusque là, tout est ok. Et produire l'affichage n'a pas posé de problème, via:

echo '<tr><td>$num_jeu</td><td>$j1</td><td>j2</td><td>j3</td><td>j4</td></tr>'; // j'ai pris soin de mettre <table> avant ma requête et </table> après ma boucle while.

Là où cela devient embarrassant, c'est lorsque je veux encoder ces données recueillies dans une nouvelle table appelée classement:

$sql = "INSERT INTO classement (num_jeu, j1, j2, j3, j4) VALUES ('$num_jeu', '$j1', '$j2', '$j3', '$j4')";

} // fin de la boucle

C'est en effet là que le navigateur m'indique Erreur Ressource #4 et que l'insertion dans la nouvelle table ne s'effectue pas.

Le but ultime, en réalité, c'est d'aller chercher dans une table (jeu_de_bois) le nombre de fois que j1, j2, j3 et j4 apparaissent dans la colonne vainqueur et produire ce résultat dans une nouvelle table (classement) où chaque joueur (j1, j2, j3 et j4) a sa colonne.

Bien sûr, un count(*) sur jointure pourrait faire l'affaire, mais je ne m'y risque plus, tant cela me dépasse (les deux tables ont une colonne commune), raison pour laquelle je me suis retranché sur substr_count qui reprend également les données.

J'espère avoir été suffisamment compréhensible ;)

Et encore merci !

arsh222 arsh222
MP
Niveau 10
24 avril 2017 à 16:00:06

c'est à quel moment que tu exécutes la requête insert ?

sinon essaie de faire un echo de $sql et exécute-le directement dans phpmyadmin ou autre interface de ton serveur mysql pour voir si la requête est correcte.

Si les colonnes num_jeu et j1 - j5 sont des INTEGER dans ta table, le fait de mettre des guillemets/apostrophes autour de '$j1'etc cause peut-être le problème

Message édité le 24 avril 2017 à 16:02:27 par arsh222
dlefebure dlefebure
MP
Niveau 1
24 avril 2017 à 17:56:56

J'ai en effet modifié INT en VARCHAR et j'ai extrait toutes les apostrophes qui entouraient mes variables.

=> résultat: Erreur Ressource #3 cette fois, mais au moins l'insert dans la DB s'est effectué. Mystérieux. Mais, cela me convient :o)

Encore merci.

MrAnge MrAnge
MP
Niveau 10
24 avril 2017 à 17:59:19

essaye

$sql = "INSERT INTO `classement` 
       (`num_jeu`, `j1`, `j2`, `j3`, `j4`) 
VALUES
       ("'.$num_jeu.'", "'.$j1."', "'.$j2.'", "'$.j3."', "$.j4.'");";

je remarque en tapant cette ligne qu'il manque le ';' pour fermer ta requete sql un oublis de recopiage egalement ? :hap:

Message édité le 24 avril 2017 à 18:03:49 par MrAnge
arsh222 arsh222
MP
Niveau 10
24 avril 2017 à 18:16:01

Le 24 avril 2017 à 17:56:56 dlefebure a écrit :
J'ai en effet modifié INT en VARCHAR et j'ai extrait toutes les apostrophes qui entouraient mes variables.

fais l'un ou l'autre, inutile de faire les deux :(

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment