PHP 脚本,用于针对 MySQL 表验证表单条目


PHP Script to validate a form entry against MySQL Tables

>新手在这里 - 我对脚本几乎一无所知,所以请耐心等待。

通过盲目的反复试验 - 以及两个月阅读 - 我发现并修改了一个工作脚本,该脚本将称为"EID"的Web表单条目与我在MySQL数据库中创建的表进行比较。

现在,我想加大赌注并为脚本添加更多功能。Web 表单还包含一个名为"Name"的框,我想在验证"EID"字段的同时,根据名为"Name"的表中的条目进行验证。 我可以轻松地将"Name"条目与另一个数据库表进行检查,但这并不能完全满足我的需求,因为每个名称都特定于其自己的 EID,并且我必须能够验证用户是否输入了正确的名称以及他或她自己的 EID 编号。 我读到我需要在关系一对一方案中联接两个数据库来完成此功能的服务器端,但我不知道如何查询这样的数据库设置并返回响应。

如何修改此现有脚本以对照这些新表检查名称和 EID?

这是我的脚本 - 我确定它不漂亮,但正如我之前所说,它确实有效。

<?PHP
class MyCustomValidation extends FM_ExtensionModule
{
    function DoValidate(&$formvars, &$error_hash)
    {
        //connect to DB
        $db = mysql_connect("mydatabase","myaccount ","mypassword");
        if(!$db)
        {
            return false;
        }
        if(!mysql_select_db("mydatabase",$db))
        {
           return false;
        }
        //Check the Employee ID Number
        if(!isset($formvars["EID"]))
        {
            $error_hash["EID"]="Please enter a valid Employee ID Number";
            return false;
        }
        $EID = $formvars["EID"];

        $result = mysql_query("select * from EID where EID='$EID'");
        if(!$result || mysql_num_rows($result) <= 0)
        {
            $error_hash["EID"]="We're sorry, but the Employee ID number you entered, '$EID', was not found in our databases. ";
            return false;
        }

        return true;
    }
}
?>

像这样的东西(我省略了填写name字段的检查(。

$name = $formvars["name"];
$result = mysql_query("SELECT * FROM EID 
                       JOIN users ON EID.EID = users.EID 
                       WHERE EID.EID = '$EID' AND users.name = '$name'");

联接的确切详细信息取决于表中的名称和列,但这显示了一般思路。

仅当 EID 存在且其名称与输入的名称匹配时,查询才会返回一行。