【问题标题】:Data insertion issues with HTML form and PHP to mySQLHTML 表单和 PHP 到 mySQL 的数据插入问题
【发布时间】:2013-05-02 16:58:52
【问题描述】:

我在 SO 中看到的帖子很少与我的情况相同,但没有找到合适的解决方案。所以我用我的问题发布问题。

我有一个 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);
?> 

现在发生的情况是,当我在表单中输入一些值并单击提交时,操作执行良好,并且在数据库中插入了新行。但是所有的行都是空的。它们只是空的,甚至不是“NULL”。 我试图在 PHP 中回显我的字段值,但那里没有输出。我的“添加了 1 条记录”效果不错,但此处没有显示任何表单值。

请帮我解决这个问题。

提前致谢。

【问题讨论】:

  • var_dump($_POST); 在您的 php 文件中并检查您在提交表单时实际获取的数据?此外,您似乎正在从 ajax 调用传递序列化数据。
  • 此代码易受 sql 注入攻击。使用准备好的语句并清理来自用户的所有数据。

标签: php html mysql


【解决方案1】:

$_POST[] 引用了html-tag 的name 属性,而不是id。

例如,$_POST['emp_name'] 应该是 $_POST['e_name']

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

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

改为这样做:

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

或者从mysqli使用bind_param()当然!

【讨论】:

  • 完成..我犯了一个愚蠢的错误...考虑ID而不是名称...太愚蠢了,我忘记了这个基本的。我在这方面工作已经 3 年多了。谢谢你提醒我,我需要更多的基础力量。 :) :)
  • 不客气。我从这条评论中推断出你已​​经设法解决了你的问题?
  • 我可以向您询问有关 PHP 的任何好的和简单/快速的在线教程吗?
  • 这取决于您要完成的工作。 PHP 用于多种用途。尽管它是一种有据可查的语言。无论如何PHP.net 是你最好的朋友。
  • @user1397891 我不知道你有多先进,但如果你有兴趣,W3Schools 有一些很好的例子,很好实施。
【解决方案2】:

使输入元素的id 和name 相同

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

否则更改您的$_POST 数组键。因为您将获得$_POST 数组的键将是输入元素的名称。但我建议您将名称和ID 设为相同

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多