Problème de Requête SQL

XanderX
Invité n'ayant pas de compte PHPfrance

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à.

ViPHP
ViPHP | 2291 Messages

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 
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Petit nouveau ! | 6 Messages

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.

devlop78
Invité n'ayant pas de compte PHPfrance

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 ...

XanderX
Invité n'ayant pas de compte PHPfrance

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.

Mammouth du PHP | 2278 Messages

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?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD