2015-09-27 203 views
1

我是刚刚研究过的PHP中的新手。我提交了一些表单,它会在MySQL表中插入新数据。我似乎无法弄清楚这个问题。这里是我的代码:使用mysql插入数据

<form method="post"> 
     <table border='2' cellpadding=4 cellspacing=1 width=50% bgcolor=white align=center > 
     <br> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Master No.:</td> 
       <td class="td-center"><input type="text" name="master_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Alacarte No.:</td> 
       <td class="td-center"><input type="text" name="alacarte_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Dessert No.:</td> 
       <td class="td-center"><input type="text" name="dessert_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Pasta No.:</td> 
       <td class="td-center"><input type="text" name="pasta_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Rice No.:</td> 
       <td class="td-center"><input type="text" name="rice_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Wine No.:</td> 
       <td class="td-center"><input type="text" name="wine_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Member ID:</td> 
       <td class="td-center"><input type="text" name="member_id" /></td> 
      </tr> 

      <tr> 
       <td>&nbsp;</td> 
       <td class="td-center"> 
        <input type="submit" name="submit" value="Add"/> 
        <input type="Reset"/> 
        <a href="member-profile.php"> 
         <input type="button" name="home" value="home"/> 
        </a><br> 
       </td> 
      </tr> 
     </table> 
     <?php 

      if (isset($_POST['submit'])) { 
       $conn = mysql_connect('localhost', 'root', ''); 
       if (!$conn) 
       { 
       die('Could not connect: ' . mysql_error()); 
       } 
       mysql_select_db("thesis_sofitel", $conn); 

       $master_no=$_POST['master_no'] ; 
       $alacarte_no= $_POST['alacarte_no'] ; 
       $dessert_no= $_POST['dessert_no'] ; 
       $pasta_no= $_POST['pasta_no'] ; 
       $rice_no= $_POST['rice_no'] ; 
       $wine_no= $_POST['wine_no'] ; 
       $member_id= $_POST['member_id'] ; 

       mysql_query("INSERT INTO `master_list`(master_no,alacarte_no,dessert_no,pasta_no,rice_no,wine_no,member_id) 
          VALUES ('$master_no','$alacarte_no','$dessert_no','$pasta_no','$rice_no','$wine_no','$member_id')"); 

       $message = "I was here!!!"; 
       echo "<script type='text/javascript'>alert('$message');</script>"; 

      }   
     ?> 
    </form> 
+0

既然你刚开始,那么最好从'mysqli'或'PDO'开始,并停止使用_deprecated_ mysql函数。启用错误报告来知道你在哪里搞乱了。 – user5173426

+1

@HawasKaPujaari说了什么,请更新您的问题,看看您发现的任何错误 – e4c5

+0

关闭您的''标记,并在之后,然后将PHP移到HTML之上。 – user5173426

回答

2

修正了一些bug在你的代码,并将其改为mysqli。这应该现在工作:

1)提供action属性在您的形式,在您的情况action = ""

2)echo知道它们是否真的被提取的值。尽管如此,这仍然倾向于SQL注入。阅读更多here了解为什么/准备好的陈述如何提供帮助。

<?php 
    if (isset($_POST['add-submit'])) { 
    $con=mysqli_connect("localhost","root","your_pass_here","thesis_sofitel"); 

    if (mysqli_connect_errno()) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

     echo  $master_no=$_POST['master_no'] ; 
     echo  $alacarte_no= $_POST['alacarte_no'] ; 
     echo  $dessert_no= $_POST['dessert_no'] ; 
     echo  $pasta_no= $_POST['pasta_no'] ; 
     echo  $rice_no= $_POST['rice_no'] ; 
     echo  $wine_no= $_POST['wine_no'] ; 
     echo  $member_id= $_POST['member_id'] ; 

$success = mysqli_query($con,"INSERT INTO `master_list`(master_no,alacarte_no,dessert_no,pasta_no,rice_no,wine_no,member_id) 
          VALUES ('$master_no','$alacarte_no','$dessert_no','$pasta_no','$rice_no','$wine_no','$member_id')"); 

          if($success){ 
       $message = "I was here!!!"; 
       echo "<script type='text/javascript'>alert('$message');</script>"; 
          } 
          else 
           echo "Query Failed."; 

mysqli_close($con); 

      }   
     ?> 

HTML:

<form method="post" action = ""> 
     <table border='2' cellpadding=4 cellspacing=1 width=50% bgcolor=white align=center > 
     <br> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Master No.:</td> 
       <td class="td-center"><input type="text" name="master_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Alacarte No.:</td> 
       <td class="td-center"><input type="text" name="alacarte_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Dessert No.:</td> 
       <td class="td-center"><input type="text" name="dessert_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Pasta No.:</td> 
       <td class="td-center"><input type="text" name="pasta_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Rice No.:</td> 
       <td class="td-center"><input type="text" name="rice_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Wine No.:</td> 
       <td class="td-center"><input type="text" name="wine_no" /></td> 
      </tr> 
      <tr> 
       <td><font face=rockwell font size=5 font color=black>Member ID:</td> 
       <td class="td-center"><input type="text" name="member_id" /></td> 
      </tr> 

      <tr> 
       <td>&nbsp;</td> 
       <td class="td-center"> 
        <input type="submit" name="add-submit" value="Add"/> 
        <input type="Reset"/> 
        <a href="member-profile.php"> 
         <input type="button" name="home" value="home"/> 
        </a><br> 
       </td> 
      </tr> 
     </table> 

    </form> 

编辑:

上面的代码工作,并澄清了,我测试了它自己。以下是附图。

The main page

After submitting the form

The results in the database

第二个编辑:

要显示OP,如果他改变了列INT类型,它仍然能工作:

enter image description here

+0

感谢@HawasKaPujaari,但是当我点击保存时,没有任何反应,在inspect元素上没有错误,它仍然不会在mySQL上插入。 – user3545006

+0

我忘了将名称更改为“添加提交”。现在出现错误:“78788787878787查询失败。” 78788等是数字输入。 – user3545006

+0

@ user3545006这意味着_query failed_'echo'查询,你看到了什么?将列名与数据库中的列名匹配。 (请记住它们区分大小写) – user5173426