【问题标题】:Linking a Resume Submission HTML form to submit to a MySQL Database链接简历提交 HTML 表单以提交到 MySQL 数据库
【发布时间】:2016-05-22 13:23:33
【问题描述】:

我是 stackoverflow 的新手,我正在尝试在我公司的网站上设置一份简历表格,潜在员工可以使用该表格向我们发送他们的简历和信息。我有基本的 HTML 设计经验,但我所学的 MySQL 和 PHP 几乎没有经验必须用于从表单框中提取数据并将其存储在数据库中。

我已经制作了一个表单,并且我已经尝试让我的 PHP 代码完成其工作已有数周了,并且在网上搜索了无济于事的解决方案。

这是我的 HTML 表单:(请注意,因为它强制换行,我必须手动设置一些表单的空间——特别是在 1-4 列表上)

<!DOCTYPE html>
<html>
<head>
        <meta charset="utf-8" />
<title>Resume Storage.</title>
</head>

<body bgcolor="#ffffff">

<form name="ResumeDatabase" action="ResumeDB.php" method="POST">

    <img src="Logo.png" alt="img" width="250" height= "150" /> <br><br>

     <p style="color:#6699FF;" style="font-family: sans-serif"><font
     size="6"><b>Hello, welcome to Blank, Inc.</font></b> </p>

     <p  style="color:black;" style="font-family: sans-serif" ><font      
     size="3"><b>Please
     enter your information in the form below and the attach your resume.       
     </font></b> </p>


     1) First Name:  <input type="text" name="firstName" maxlength="15" 
        size="15" style="background-color: white ;color:black"> <br/><br/>
     2) Last Name:  <input type="text" name="lastName" maxlength="15" 
        size="15" style="background-color: white ;color:black"> <br/><br/>
     3) Email Address:  <input type="text" name="emailAddress" 
        maxlength="40" size="45" style="background-color: white 
        ;color:black"> <br/><br/>  
     4) Years of Experience Acquired:  <input type="text" 
        name="yearsExperience" maxlength="2" size="5" style="background- 
        color: white ;color:black"><br/>

     <p style="color:red;" >*Please only submit Resumes of the PDF file 
      type* </br> </p>

     <input type="file" name="Resume"> 

     <br/><br/>

     <input type="submit" value="Submit Resume Form" onClick="aa();">

</form>

为了便于讨论上面的 HTML 表单,
-form name... 是第 10 行
-1) 名字是第 21 行
- 输入类型提交是第 32 行


现在我将发布我的 PHP 代码,相信我,我已经检查了文件名,以确保代码在提交“操作”的领域具有相同的文件名。

我没有费心修复这个间距,但请记住,这可能是代码或修复的混合,以解析来自至少 10 个不同来源的错误。如果我通常只需要使用完全不同的代码,我不会感到惊讶。仅供参考,NT 和 1 是用户名和密码。

<?php
if( $_POST )
{
    $con = mysql_connect("localhost","NT","1");

    if (!$con)
    {
        die('Could not connect to the database: ' . mysql_error());
    }
    mysql_select_db("test", $con);  

}
$fName = $_POST['firstName'];
$lName = $_POST['lastName'];
$emailAdd = $_POST['emailAddress'];
$yExperience = $_POST['yearsExperience'];  

$fName = mysql_real_escape_string($fName);
$lName = mysql_real_escape_string($lName); 
$emailAdd = mysql_real_escape_string($emailAdd); 
$yExperience = mysql_real_escape_string($yExperience);

$query = "
INSERT INTO 'NT'.'resume-storage' ('firstName', 'lastName', 'emailAddress', 'yearsExperience')
        VALUES (NULL, '$fname', '$lName', '$emailAdd', '$yExperience');";

mysql_query($query);

    echo "<h2>Thank you, your information has been stored in our Database.</h2>";

msql_close($con);

?>


为了便于讨论上面的 PHP 代码,
-mysql_select_db 是第 10 行
-$lname=POST 是第 15 行
-$lname=mysql_real_escape 是第 20 行
-INSERT INTO 是第 25 行
-echo 是第 30 行

这是我在代码内外测试过的一些代码 sn-ps,但我可能在错误的地方使用它们:(同样我没有手动编辑间距)

//mysql_connect("localhost", "NT", "1") or die(mysql_error());
//mysql_select_db("test") or die(mysql_error());
//mysql_query("insert into 'test'.'resume-storage' ('firstName', 'lastName','emailAddress', 'yearsExperience')");

#$connect = mysql_connect(“localhost”, "testadmin", ); if (!connect) { die('Connection Failed: ' . mysql_error()); { mysql_select_db(“test”, $connect);
//$sql = "INSERT INTO resume-storage (firstName, lastName, emailAddress, yearsExperience)
//VALUES ('$first_Name', '$last_Name', '$email_Address', '$yearsExperience')";

//mysql_query(“INSERT INTO resume-storage) VALUES($FirstName, $LastName, $EmailAddress, $YearsExperience)";
//if (!mysql_query($user_info, $connect)) 
    //{ 
//echo “Your information was added to the database.”;

    //die('Error: ' . mysql_error());
    //}



//mysql_close($connect);
#('$first_Name', '$last_Name', '$email_Address', '$years_Experience')
/>


这是我最近收到的错误,好像没有正确获取表单中输入的文本。

Notice: Undefined index: firstName in C:\xampp\htdocs\ResumeDB.php on line 14

Notice: Undefined index: lastName in C:\xampp\htdocs\ResumeDB.php on line 15

Notice: Undefined index: emailAddress in C:\xampp\htdocs\ResumeDB.php on line 16

Notice: Undefined index: yearsExperience in C:\xampp\htdocs\ResumeDB.php on line 17

Notice: Undefined variable: fname in C:\xampp\htdocs\ResumeDB.php on line 26
Thank you, your information has been stored in our Database.


Fatal error: Call to undefined function msql_close() in C:\xampp\htdocs\ResumeDB.php on line 32


欢迎提供任何帮助,我推测没有对简历提交按钮进行任何操作可能会导致提交失败——但这是一个猜测。

谢谢,
内特

【问题讨论】:

  • 这些错误是不言自明的。您的 INSERT 语句是错误的,请删除表名和列名周围的引号。 $fName$fname 是两个不同的变量。最后,msql_close($con); 应该是 mysql_close($con);
  • @RajdeepPaul - 你的意思是mysql_
  • @OliverQueen 是的,这是一个错字。 :-)
  • 与其他人充分建议无关,但认真考虑使用 mysqli_ 函数或 - 最好 - 使用数据库的 PDO :)
  • 我按照你们所有人的建议进行了更改,并且很好地返回了“谢谢,....”消息,没有任何错误。但是,该信息似乎并未实际提交到数据库。是不是所有东西都连接到 MySQL 数据库,但它没有从空白中检索内容?

标签: php html mysql forms apache


【解决方案1】:

注意:在 PHP7 中 mysql_ 已被删除,因此请注意。请使用 mysqli_ 或 PDO

您的编辑代码:

<?php
if(isset($_POST['firstName']) &&  isset($_POST['lastName']) && isset($_POST['emailAddress']) && isset($_POST['yearsExperience'])){
if( $_POST )
{
    $con = mysql_connect("localhost","NT","1");

    if (!$con)
    {
        die('Could not connect to the database: ' . mysql_error());
    }
    mysql_select_db("test", $con);  

}


$fName = $_POST['firstName'];
$lName = $_POST['lastName'];
$emailAdd = $_POST['emailAddress'];
$yExperience = $_POST['yearsExperience'];  

$fName = mysql_real_escape_string($fName);
$lName = mysql_real_escape_string($lName); 
$emailAdd = mysql_real_escape_string($emailAdd); 
$yExperience = mysql_real_escape_string($yExperience);
//Updated insert query
$query = "
INSERT INTO resume-storage (firstName, lastName, emailAddress, yearsExperience)
        VALUES ('$fName', '$lName', '$emailAdd', '$yExperience');";

mysql_query($query);

    echo "<h2>Thank you, your information has been stored in our Database.</h2>";

mysql_close($con); //mysql not msql
}
else
{
  header("Location:localhost:8080/index.php");
}
?>

【讨论】:

  • 请阅读我的comment$fName$fname 是两个不同的变量。删除表名和列名周围的单引号。并从 INSERT 查询中删除 NULL,
  • override 是如何出现的?请解释一下。
  • NULL, 仍然存在。我相信我应该把剩下的事情留给 OP 来解决。
【解决方案2】:

首先,请注意“mysql”库已被弃用并已从 PHP7 中删除。

然后那些Notice: Undefined index:$_POST 可能是空的(或者表单输入也是空的) 要避免它们,请执行以下操作

if (isset($_POST["name"]) && $_POST["name"]){
    // your code here
//

你可以试试这个吗?

<?php
if( $_POST )
{
    $con = mysql_connect("localhost","NT","1");

    if (!$con)
    {
        die('Could not connect to the database: ' . mysql_error());
    }
    else {
        mysql_select_db("test", $con);  

        if(isset($_POST['firstName']) && $_POST['firstName']) {
            $fName = mysql_real_escape_string($_POST['firstName']);
        }
        else 
            $fName = ""; // prevent from undefined var passed to mysql_query
        if(isset($_POST['lastName']) && $_POST['lastName']) {
            $lName = mysql_real_escape_string($_POST['lastName']);
        }
        else 
            $lName = ""; // prevent from undefined var passed to mysql_query
        if(isset($_POST['emailAddress']) && $_POST['emailAddress']) { 
                $emailAdd = mysql_real_escape_string($_POST['emailAddress']);
        }
        else 
            $emailAdd = ""; // prevent from undefined var passed to mysql_query
        if(isset($_POST['yearsExperience']) && $_POST['yearsExperience']) {
            $yExperience = mysql_real_escape_string($_POST['yearsExperience']);
        }
        else 
            $yExperience = ""; // prevent from undefined var passed to mysql_query

        $query = "INSERT INTO NT.resume-storage (firstName, lastName, emailAddress, yearsExperience)
                VALUES ('$fName', '$lName', '$emailAdd', '$yExperience');";

        echo $query;

        if (mysql_query($query)) {
            echo "<h2>Thank you, your information has been stored in our Database.</h2>";
            mysql_close($con);
        }
        else{
            echo "<h2>Error</h2>";
        }
    }
}
?>

这有点脏,但你能告诉我它是做什么的吗?

已编辑

【讨论】:

  • 与其完全修改代码,不如先解决手头的问题。请阅读我的comment$fName$fname 是两个不同的变量。删除表名和列名周围的单引号。还要从 INSERT 查询中删除 NULL,
  • John Smith,我尝试了您的 php 代码,它返回以下错误:“第 15 行的 C:\xampp\htdocs\HTSIResumeDB.php 中的解析错误:语法错误,意外 '}'”但是,在删除“}”后,它当然会说下一行的 else 有错误。想法?
  • 我得到了相同的第 16 行“else”错误,但我几乎肯定我把分号放在了错误的地方。你能指定哪些部分需要一个吗?
  • 我现在无法运行脚本。您是否复制粘贴了我更新的代码?你可以用你的代码phpcodechecker.com试试这个
  • 在代码检查器站点上,它返回 6 次使用过时的 mysql 查询,仅此而已。但是当我运行它时,我返回一个文本字符串,上面写着:“INSERT INTO resume-storage (firstName, lastName, emailAddress, yearsExperience) VALUES ('Kanye', 'West', 'kWest@gmail.com', '7') ; 错误”这表明它正在从表单中获取值,但没有正确地将它们插入到数据库中。 resume-storage 是数据库中名为“test”的表,但即使我在代码中用 test 替换它,它也会返回相同的错误——它只是没有说明错误的行号。有什么想法吗?
猜你喜欢
  • 2023-03-15
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
相关资源
最近更新 更多