2014-05-22 204 views
-4

我有一个数据INSERT的问题,当我填写所有行时,我没有发现他们在我的数据库。插入数据通过PHP

这里是我的代码:

<?php 

    include("/config/config.php"); 

      ///////////////////////////////traitment de la requete de selection ///////////////////////////////////// 

     if(isset($_POST['val'])) 

     { 
    echo "départ"; 
     $imm=$_POST[im]; 
     $doss=$_POST[nd]; 
     $ass=$_POST[ns]; 
     $bn=$_POST[bn]; 
     $trec=$_POST[T_rec]; 
     $Erec=$_POST[e_rec]; 
     $mt=$_POST[Mt]; 
     $Drec=$_POST[Dt]; 
     $INP=$_POST[inp]; 
     $com=$_POST[comm]; 

     $resultat=mysql_query("INSERT INTO rec_info ('imma','INP','n_dossier','nom_benif','nom_ass','montant','type_rec', 
     'date_rec','etat_rec','comm_rec','num_rec') Values 
     ('$imm','$INP','$doss','$bn','$ass','$mt','$trec','$Drec','$Erec','$comm','')"); 

     if($resultat) 
     { 

      echo "opération réussie "; 
     }else { 
      echo "opération non réussie "; 
     } 

     } 
    ?> 


</div> 

<div style=" position:absolute;left:15px;width:310px;top:173px; background-color:#eff5f7; font-size:102%; padding:0em;line-height:200% "> 
     Menu 
    <nav> 
     <ul id="menu"> 
     <li><a href="rec_recherche.php">Recherche d'une réclamation PEC </a></li> 
     <li><a href="s_rec.php">Saisir une réclamation PEC </a></li> 
     <li><a href="">Changement d'état d'une réclamation PEC</a></li> 
     <li><a href="index1.php">Quitter</a></li> 

     </ul> 
    </nav> 

     </div> 
</div> 

    </body> 
</html> 

谢谢

+5

“你能找到bug”的问题[对Stack Overflow来说不是好问题](http://meta.stackoverflow.com/questions/253787/are-there-legitimate-fix-my-code-questions?cb = 1#253788)。确保你对问题**有一个简短但具体的陈述,准确地告诉我们什么是错的。 “它不起作用”不是一个问题陈述。 –

+0

当您执行INSERT INTO时,您的列不使用引号。要么拿出来,要么用反引号代替它们。只有VALUES使用单引号。您还需要在'$ imm = $ _ POST ['im'];'中使用'$ imm = $ _ POST [im];'中的引号等等 –

+0

将错误报告添加到文件顶部 '使用error_reporting(E_ALL); ini_set('display_errors',1);'在开发过程中。 –

回答

0

你不能在你的列标识符单引号。无论是使用蜱或什么都没有:

$resultat=mysql_query("INSERT INTO rec_info (imma,INP,n_dossier,nom_benif,nom_ass,montant,type_rec, 
    date_rec,etat_rec,comm_rec,num_rec) Values 
    ('$imm','$INP','$doss','$bn','$ass','$mt','$trec','$Drec','$Erec','$comm','')"); 

$resultat=mysql_query("INSERT INTO rec_info (`imma`,`INP`,`n_dossier`,`nom_benif`,`nom_ass`, 
`montant`,`type_rec`,`date_rec`,`etat_rec`,`comm_rec`,`num_rec) 
Values ('$imm','$INP','$doss','$bn','$ass','$mt','$trec','$Drec','$Erec','$comm','')"); 

Please, don't use mysql_* functions in new code。他们不再维护and are officially deprecated。查看red box?请改为了解prepared statements,并使用PDOMySQLi - this article将帮助您决定哪个。如果您选择PDO,here is a good tutorial

你也广SQL injections

+0

为什么你在投票结束时发布答案? – jeroen

+0

我不相信这两者是相互排斥的。我认为有机会在这里教书。 PHP和如何成为一个好的SO公民。特别是因为有一个编码工作。 –

+0

您正在发布答案,同时试图避免其他人可以发布答案。我不知道我是否有资格认为这是'如何成为一个好的SO公民'。对于评论虽然有点长:-) – jeroen

0

你有一个问题,你的MySQL语法

打开您查询您的字段名称应与回写蜱不报价。我会举一个例子,但堆栈不会让我输入回刻度。

0

这部分应该有蜱:

$imm=$_POST['im']; 
    $doss=$_POST['nd']; 
    $ass=$_POST['ns']; 
    $bn=$_POST['bn']; 
    $trec=$_POST['T_rec']; 
    $Erec=$_POST['e_rec']; 
    $mt=$_POST['Mt']; 
    $Drec=$_POST['Dt']; 
    $INP=$_POST['inp']; 
    $com=$_POST['comm']; 

而且这部分不应该有蜱(表中的字段):

$resultat=mysql_query("INSERT INTO rec_info (imma,INP,n_dossier,nom_benif,nom_ass,montant,type_rec, 
date_rec,etat_rec,comm_rec,num_rec) Values 
('$imm','$INP','$doss','$bn','$ass','$mt','$trec','$Drec','$Erec','$comm','')"); 

记住在MySQL蜱是唯一的变量。