2012-03-11 3 views
1

Mon code n'insère aucun enregistrement dans mysql. Qu'est-ce qui ne va pas? Je suis vraiment confus. J'ai conçu un formulaire et je veux lire les données de la boîte de texte et les envoyer à la base de données.Problème lors de l'insertion de données dans la base de données

<?php 
if(isset($_post["tfname"])) 
    { 
     $id=$_post["tfid"]; 
     $name=$_post["tfname"]; 
     $family=$_post["tffamily"]; 
     $mark=$_post["tfmark"]; 
     $tel=$_post["tftell"]; 

$link=mysql_connect("localhost","root",""); 
if (!$link) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("university",$link); 
$insert="insert into student (sid,sname,sfamily,smark,stel) values ($id,'$name','$family',$mark,$tel)"; 

mysql_query($insert,$link); 
    } 
mysql_close($link); 
?> 
+0

Quelles sont les erreurs? –

+1

Les variables PHP sont sensibles à la casse; '$ _post' ne fonctionnera pas puisque la variable correcte est' $ _POST' (si vous avez défini correctement les options de rapport d'erreurs, cela devrait apparaître dans un avis). En outre, vous devriez vérifier si la requête s'exécute correctement et afficher/enregistrer le 'mysql_error()' si ce n'est pas le cas. Soit dit en passant, savez-vous que même si votre script fonctionne, il y a un trou d'injection SQL béant dans lequel un attaquant potentiel pourrait piller votre base de données? –

Répondre

2

Vous feriez mieux de mettre des guillemets pour id, mark et tel après les valeurs dans votre requête. Aussi comme le dit un autre code, vous devez utiliser $ _POST au lieu de $ _post dans votre code. Essayez et me dire le résultat:

<?php 
if(isset($_POST["tfname"])) { 
    $id=$_POST["tfid"]; 
    $name=$_POST["tfname"]; 
    $family=$_POST["tffamily"]; 
    $mark=$_POST["tfmark"]; 
    $tel=$_POST["tftell"]; 

    $link=mysql_connect("localhost","root",""); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } else { 
     mysql_select_db("university",$link); 
     $insert="insert into student 
       (sid,sname,sfamily,smark,stel) values 
       ('$id','$name','$family','$mark','$tel')"; 
     mysql_query($insert,$link) or die (mysql_error()); 
     mysql_close($link); 
    } 
} else { 
    die('tfname did not send'); 
} 
?> 

Utilisez mysql_query($insert,$link) or die (mysql_error()); pour aller chercher le message d'erreur.

+0

mohammad, cela n'a pas fonctionné. – samira

+0

@sami: VOULEZ-VOUS FOURNIR L'ERREUR QUE VOUS OBTIENDREZ? écrire cela n'a pas fonctionné n'est pas une réponse ... –

+0

mysql_error() doit imprimer l'erreur. Qu'Est-ce que c'est? –

0

Avec le code que vous avez fourni, il pourrait presque être quoi que ce soit - à faire quelques tests ... avez-vous quelque chose echo'd pour confirmer que vous obtenez même le tfname en POST? Est-ce qu'il sélectionne bien la base de données? Est-ce que les champs $ id, $ mark et $ tel ont aussi besoin de guillemets simples? Nous avons besoin d'en savoir plus sur l'endroit où le code ne fonctionne pas pour fournir plus d'aide mais cet extrait apparaît comme s'il devrait être en cours d'exécution, en attendant, s'il vous plaît utiliser quelques échos pour affiner votre problème!

0

Essayez d'exécuter la requête sql générée dans le navigateur de requêtes sql. Obtenez la requête par l'instruction "echo $ insert".

-1

changer l'insert $ à:

$insert="insert into student (sid,sname,sfamily,smark,stel) values ($id,'".$name."','".$family."','".$mark."','".$tel."')"; 

autre ensemble ini_set('display_errors',1) de sorte que php affiche les messages d'erreur au besoin.

Enfin, lorsque vous faites une requête mysql, essayez d'utiliser or die(mysql_error()) dans la requête de sorte que si quelque chose ne va pas avec mysql ou syntaxe, nous sommes conscients.

$q = mysql_query($query) or die(mysql_error()); 
+0

'die' ne devrait pas être utilisé pour la gestion des erreurs, car il ferme le script entier. Cela peut facilement causer des bogues et des sorties bizarres, et dans les environnements en direct c'est une mauvaise idée d'afficher directement les erreurs de script à l'utilisateur du tout. Il est important de simplement écrire des routines de gestion des erreurs appropriées. –

+0

J'ai donné cet exemple étant donné que l'application fonctionne comme un test et qu'une fois l'erreur rectifiée, la fonction de filière peut être supprimée ... – yuvrajm

+0

C'est très bien, mais il est bon de noter cela pour que les gens sachent que ça veut dire pour le débogage seulement. En outre, un script a toujours besoin d'une gestion correcte des erreurs (base de données); Les requêtes qui fonctionnent actuellement pourraient décider d'arrêter de travailler à l'avenir. –

Questions connexes