2013-05-02 90 views
3

我在与SO相关的同一场景中看到过几篇文章,但没有找到合适的解决方案。所以我张贴问题与我的问题的东西。向mySQL提交HTML表单和PHP的数据插入问题

我有一个HTML表单

<form method="post" id="myForm"> 
     <label for="e_name">Name</label> 
     <input name="e_name" id="emp_name" value="" type="text" data-theme="a"> 
     <label for="date">Date</label> 
     <input name="date" id="emp_dob" value="" data-theme="a"> 
     <label for="gender">Gender</label> 
     <select name="gender" id="emp_gender" data-role="slider" data-theme="a" data-inline="true"> 
     <option value="male">Male</option> 
     <option value="female">Female</option>   
     </select> 
     <label for="address">Address</label> 
     <textarea name="address" id="emp_address" value="" type="text" data-theme="a"></textarea><br><br>  
     <input type="button" id="insert" value="Submit">  
    </form> 

    <div id="someElement"></div> 

和我有以下执行我的表单元素提交给一个PHP页面级

$(document).ready(function(){ 
    $("#insert").click(function(e) { 
    e.preventDefault(); 
    alert("am in the Insert function now"); 
     $.ajax({ 
     cache: false, 
     type: 'POST', 
     url: 'insert.php', 
     data: $("#myForm").serialize(), 
     success: function(d) { 
      $("#someElement").html(d); 
     } 
     }); 
    }); 
}); 

这是我的PHP -

<?php 
    $con=mysqli_connect("localhost","root","root","employee"); 
    // Check connection 
    if (mysqli_connect_errno()) 
     { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 
     $name =" "; 
     $dob =" "; 
     $gender =" "; 
     $address =" "; 

     if(isset($_POST['emp_name'])){ $name = $_POST['emp_name']; } 
     if(isset($_POST['emp_dob'])){ $dob = $_POST['emp_dob']; } 
     if(isset($_POST['emp_gender'])){ $gender = $_POST['emp_gender']; } 
     if(isset($_POST['emp_address'])){ $address = $_POST['emp_address']; } 

     echo $name; 
     echo $dob; 
     echo $gender; 


echo $address; 


$sql="INSERT INTO emp_details (emp_name, emp_gender, emp_address) VALUES ('$name', '$gender', '$address')"; 

if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 

echo "1 record added"; 

mysqli_close($con); 
?> 

现在发生的是,当我在表单中输入一些值并单击提交时,动作表现良好,在数据库中进行serts。但是所有的行都是空的。它们只是空的,甚至不是“NULL”。 我试图在PHP中回显我的字段值,但没有输出。我的“1记录添加”已经出现,但没有表格值出现在这里。

请帮我整理一下。

在此先感谢。

+0

'var_dump($ _ POST);'在你的PHP文件中检查你的表单是否在提交时真正获取数据?此外,它似乎是从ajax调用传递序列化数据。 – Rikesh 2013-05-02 08:52:28

+0

这段代码容易受到SQL注入攻击。使用准备好的语句并清理用户的所有数据。 – nk9 2013-05-02 08:55:35

回答

1

$_POST[]参考name属性html-tag而不是id

例如,$_POST['emp_name']$_POST['e_name']

此外,不要用单引号封装的变量:从

"INSERT INTO emp_details (emp_name, emp_gender, emp_address) VALUES ('" . $name . "', '" . $gender . "', '" . $address . "')"; 

或者使用bind_param()

"INSERT INTO emp_details (emp_name, emp_gender, emp_address) VALUES ('$name', '$gender', '$address')"; 

做到这一点,而不是mysqli ofcourse!

+0

完成..我犯了一个愚蠢的错误......考虑ID而不是名字......我很愚蠢,我忘了这个基本。已经有三年多的时间了,我感谢提醒我需要更多的基础力量。 :) :) – 2013-05-02 09:54:46

+0

不客气。我从这个评论推断出你已​​经设法解决你的问题? – Aquillo 2013-05-02 09:56:40

+0

是的问题解决了。 – 2013-05-02 10:08:20

1

充分利用id和同

<form method="post" id="myForm"> 
     <label for="e_name">Name</label> 
     <input name="emp_name" id="emp_name" value="" type="text" data-theme="a"> 
     <label for="date">Date</label> 
     <input name="emp_dob" id="emp_dob" value="" data-theme="a"> 
     <label for="gender">Gender</label> 
     <select name="emp_gender" id="emp_gender" data-role="slider" data-theme="a" data-inline="true"> 
     <option value="male">Male</option> 
     <option value="female">Female</option>   
     </select> 
     <label for="address">Address</label> 
     <textarea name="emp_address" id="emp_address" value="" type="text" data-theme="a"></textarea><br><br>  
     <input type="button" id="insert" value="Submit">  
    </form> 
您输入元素 name

否则更改$_POST阵列keys.Because你会得到$_POST数组的键将输入的名称elements.But我建议你以mak ethe的名字和id相同

+0

Chek编辑@ Aquillo – 2013-05-02 08:56:34