Problème de Requête SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de Requête SQL

Re: Problème de Requête SQL

par sirakawa » 17 juil. 2011, 13:52

Dans ce genre de cas, je fais imprimer la requete et je la balance à mysql en ligne de commande. Ses messages d'erreur sont un peu plus éclairants.
Il y a peut-être moyen de créer le tableau de valeurs à passer, de le visualiser et de le passer après par execute:
$array_req = array(
'match_team' => $team,
'match_date' => $date,
'match_map_1_id' => $match_map_1_id,
'match_score_map_1_adversaire' => $match_score_map_1_adversaire,
'match_score_map_1' => $match_score_map_1,
'match_map_2_id' => $match_map_2_id,
'match_score_map_2_adversaire' => $match_score_map_2_adversaire,
'match_score_map_2' => $match_score_map_2);
print_r($array_req);
$req->execute($array_req);
Par ailleurs, je ne suis pas sûr que la syntaxe du execute soit la bonne... Mais je ne me sers pas de ces fonctions..; Alors?

Re: Problème de Requête SQL

par XanderX » 15 juil. 2011, 11:30

Bonjour,

j'ai activer mes erreurs il m'afficher juste array, j'ai retaper entièrement ma requête et sa fonctionne, j'ai toujours pas trouver d’où venais mon erreur mais voici comment j'ai fait si sa peut aider quelqu'un.

$team = $_POST['team'];
$match_map_1_id = $_POST['match_map_1_id'];
$match_score_map_1_adversaire = $_POST['match_score_map_1_adversaire'];
$match_score_map_1 = $_POST['match_score_map_1'];
$match_map_2_id = $_POST['match_map_2_id'];
$match_score_map_2_adversaire = $_POST['match_score_map_2_adversaire'];
$match_score_map_2 = $_POST['match_score_map_2'];
$date = "le : ".$_POST['nom_d']."/".$_POST['nom_m']."/".$_POST['nom_y'];


$req = $db->prepare('INSERT INTO mod_match(match_team, match_date, match_map_1_id, match_score_map_1_adversaire, match_score_map_1, match_map_2_id, match_score_map_2_adversaire, match_score_map_2) VALUES(:match_team, :match_date, :match_map_1_id, :match_score_map_1_adversaire, :match_score_map_1, :match_map_2_id, :match_score_map_2_adversaire, :match_score_map_2)');
$req->execute(array(
'match_team' => $team,
'match_date' => $date,
'match_map_1_id' => $match_map_1_id,
'match_score_map_1_adversaire' => $match_score_map_1_adversaire,
'match_score_map_1' => $match_score_map_1,
'match_map_2_id' => $match_map_2_id,
'match_score_map_2_adversaire' => $match_score_map_2_adversaire,
'match_score_map_2' => $match_score_map_2,
));
Merci quand même.

Re: Problème de Requête SQL

par devlop78 » 15 juil. 2011, 06:09

Un détail peut-être mais je pense pas qu'avec les espaces cela puisse fonctionner
$db -> prepare 
Correction
$db->prepare 

Si Si puisque

$form->addElement(x)
->addElement(y);

fonctionne ... Aucun soucis pour les espaces ;)

Sinon, auteur du post, active les erreurs pour savoir ...

Re: Problème de Requête SQL

par AQweR » 14 juil. 2011, 19:05

Je ne suis pas un expert mais en tout cas il me semble que le code exact pour entre des valeurs est :
INSERT INTO mod_match VALUES ('', '" . $match_id . "', '" . $match_team . "'); 
Si tu rentre de nouvelle valeur il faut préciser "VALUES" ensuite ne pas faire d'erreur de syntaxe.
Je ne te garanti rien mais si ça t'aide, tant mieux :wink:

Ah oui et précision pour en avoir fait les frais, lorsque tu insert tes valeurs, met les dans le même ordre que tes colonnes, si elle commence par match_id et match_team met les en première comme j'ai fait.

Re: Problème de Requête SQL

par dunbar » 14 juil. 2011, 18:39

Un détail peut-être mais je pense pas qu'avec les espaces cela puisse fonctionner
$db -> prepare 
Correction
$db->prepare 

Problème de Requête SQL

par XanderX » 14 juil. 2011, 15:58

Bonjour,

Voici mon problème, je n'arrive pas a inscrire mes données dans ma base de donnée voici le script :
<?php

$date = "le : ".$_POST['nom_d']."/".$_POST['nom_m']."/".$_POST['nom_y'];


$req = $db -> prepare ('INSERT INTO mod_match(match_team, match_date, match_map_1_id, match_score_map_1, match_score_map_1_adversaire, match_map_2_id, match_score_map_2, match_score_map_2_adversaire) VALUES(:match_team, :match_date, :match_map_1_id, :match_score_map_1, :match_score_map_1_adversaire, :match_map_2_id, :match_score_map_2, :match_score_map_2_adversaire)');
$req-> execute(array(
'match_team' => $_POST['team'],
'match_date' => $date,
'match_map_1_id' => $_POST['match_map_1_id'],
'match_score_map_1_adversaire' => $_POST['match_score_map_1_adversaire'],
'match_score_map_1' => $_POST['match_score_map_1'],
'match_map_2_id' => $_POST['match_map_2_id'],
'match_score_map_2_adversaire' => $_POST['match_score_map_2_adversaire'],
'match_score_map_2' => $_POST['match_score_map_2_id']
));
$req->closeCursor();

echo 'Match ajoutée ! Cliquez <a href="index.php?cat=match">ici</a> pour retourner a l\'accueil match';
?>
Chaque valeur on été tester grâce a un echo...

Voici ma base de donnée :

Image

Merci d'avance.

PS : Avant le script pour l'inscription des valeurs dans la base de donnée, il y a toute les conditions a remplir je peut les fournir si cela pourrais venir de là.