需要帮助提交我的表格数据到数据库


Need help submitting my form data into database

好的,让我先说一下,我是一个业余爱好者,所以非常感谢你的帮助。

OK,我有一个名为'skills.php'的表单,在此表单上,您输入以下字段'Skills_ID, Employee_ID, First_name, Last_name和Skill'。我使用java,所以当您选择employee_ID时,名称字段更改为员工的名称(链接到员工表)。

然而,因为我已经添加了这个函数,我不能保存我的表单数据到我的数据库。也许我在实现java函数时不小心删除了一行代码。有人能帮我弄明白吗?下面是我的表单'Skill.php':

<html>
<?php
// Connecting to database
$pdo = new PDO("mysql:host=localhost;dbname=hrmwaitrose;charset=utf8", "root", "");
?>
<html>
<head>
        <link type="text/css" rel="stylesheet" href="style.css"/>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <!-- Online Jquery -->
        <title>Skill</title>
    </head>
    <body>
        <div id="content">
            <h1 align="center">Add Employee Skill</h1>
            <form action="insertskill.php" method="post">
                <div>
                    <p>
                        Skill ID:
                        <input type="text" name="Training_ID">
                    </p>
                    <p>
                        Employee ID:
                        <select id="Employee_ID">
                            <option value="">Select one</option>
                            <?php
                            $st = $pdo->prepare("SELECT Employee_ID FROM Employee");
                            $st->execute();
                            $rows = $st->fetchAll(PDO::FETCH_ASSOC);
                            foreach ($rows as $row) {
                                ?><option value="<?php echo $row ['Employee_ID']; ?>"><?php echo $row ['Employee_ID']; ?></option><?php
                            }
                        ?>
                        </select>
                    <p>
                        First name:
                        <input type="text" name="First_name" id="First_name">
                    </p>
                    <p>
                        Last name:
                        <input type="text" name="Last_name" id="Last_name">
                    </p>
                    <p>
<p>Skill: <select name="Skill">
  <option value="">Select...</option>
  <option value="Checkouts">Checkouts</option>
  <option value="Fresh goods">Fresh goods</option>
  <option value="Dry goods">Dry goods</option>
  <option value="Fruit & Veg">Fruit & Veg</option>
  <option value="Operations">Operations</option>
</select>
</p>
                    <input type="submit">
                    <INPUT Type="BUTTON" VALUE="Back" ONCLICK="window.location.href='index.html'">
            </form>
        </div>
    <script type="text/javascript">
        $(function() { // This code will be executed when DOM is ready
            $('#Employee_ID').change(function() { 
                var $self = $(this); // jQuery object with the select inside
                $.post("insertskill.php", { Employee_ID : $self.val()}, function(json) {
                    if (json && json.status) {
                        $('#First_name').val(json.name);
                        $('#Last_name').val(json.lastname);
                    }
                })
            });
        })
    </script>
    </body>
</html>

下面是提交按钮按下'insertskill.php'时使用的代码:

<?php
$pdo = new PDO("mysql:host=localhost;dbname=hrmwaitrose;charset=utf8", "root", "");
header("Content-Type:application/json; Charset=utf-8");

$st = $pdo->prepare("SELECT First_name, Last_name FROM Employee WHERE Employee_ID = :employee_id");
$st->execute(array ('employee_id' => $_POST['Employee_ID']));
$data = $st->fetch(PDO::FETCH_ASSOC);
echo json_encode(array ('status' => true, 'name' => $data ['First_name'], 'lastname' => $data ['Last_name']));
?>

只是看这个代码我很确定我可能不小心删除了代码插入到数据库中,但是我不知道如何修复它:(有人可以帮助吗?感谢!提前感谢

in "insertskill.php" line 6:

$st = $pdo->prepare("SELECT First_name, Last_name FROM Employee WHERE Employee_ID = :employee_id");

你正在执行一个SELECT查询(读),听起来更像是你想要一个INSERT查询(写)。

在您的情况下,INSERT语句将类似于:

$st = $pdo->prepare("INSERT INTO Employee (Training_Id,Employee_Id,First_Name,Last_Name,Skill) VALUES (:training_id,:employee_id,:first_name,:last_name,:skill)")
$st->execute(array(':training_id' => $training_id, ':employee_id' => ...));

首先,要小心。Java is not JavaScript !

你是对的,你移除了INSERT行。网上有几篇关于如何做到这一点的文章。这里有一个。谷歌PDO Insert查看更多结果。

您应该将这些INSERT命令放在您的insertskill.php文件中,并创建另一个,也许是fetchName.php或类似的东西,使用您提供的代码根据其id返回员工的姓和名,并在JavaScript $.change()函数中使用它。对于一个名为insertskill.php的文件来说,获取数据是没有意义的。

你忘了指定你期待一个JSON在你的$.post()命令。这样做:

$.post("insertskill.php", { Employee_ID : $self.val()}, function(json) {
    if (json && json.status) {
        $('#First_name').val(json.name);
        $('#Last_name').val(json.lastname);
    }
}, 'json'); // Here!

首先要说的是,您不是在使用Java。你正在使用JavaScript(实际上是ECMAScript,它与Java非常非常不同。

接下来,您是正确的,现在根本没有INSERT语句,您将需要编写一个INSERT语句来插入您想要插入的数据。

然而,您还需要以某种方式区分为Ajax请求(获取表单的名称)调用insertskill.php和为插入数据调用insertskill.php之间的区别。在Javascript (jQuery)请求中,你可以将url改为:

$.post("insertskill.php?ajax"
然后在insertskill.php中do:
if(isset($_GET['ajax'])) {
  header("Content-Type:application/json; Charset=utf-8");
  $st = $pdo->prepare("SELECT First_name, Last_name FROM Employee WHERE Employee_ID = :employee_id");
  $st->execute(array ('employee_id' => $_POST['Employee_ID']));
  $data = $st->fetch(PDO::FETCH_ASSOC);
  echo json_encode(array ('status' => true, 'name' => $data ['First_name'], 'lastname' => $data ['Last_name']));
  } 
else {
  // Do the insert statement stuff...
  }