当没有检测到更多错误时,数据无法插入数据库


Data cannot insert to database when no more error is detect

这是我的代码

我的if-else语句有问题还是插入有任何问题

if(isset($_POST["添加"]){

    $name = $_POST["username"];
    $pass = $_POST["password"];
    $fname = $_POST["fname"];
    $lname = $_POST["lname"];
    $hph = $_POST["home"];
    $hp = $_POST["hp"];
    $mail = $_POST["email"];
    $add = $_POST["address"];
    $age = $_POST["age"];
    $pos = $_POST["position"];
    $dept = $_POST["dept"];

$result我用它来检查我的用户名

    $result=mysql_query("select*from employee where Emp_Username='$name'");
if($name==""||$pass==""||$fname==""||$lname==""||$hph==""||$hp==""||$mail==""||$add==""||$age==""||$pos==""||$dept=="")
        {
?>
             <script type="text/javascript">
                 alert("Please fill in all the required informations.");
             </script> 
<?php        
        }
elseif(empty($errors)===true)
        {                   
                     if (!preg_match("/^[A-Z][a-zA-Z -]+$/i",$_POST['fname'])) 
                     {
                        $fnameErr= 'Invalid key has been input*';   
                     } 
                     if (!preg_match("/^[A-Z][a-zA-Z -]+$/i",$_POST['lname']) )
                     {
                        $lnameErr= 'Invalid key has been input*';           
                     }
                     if (filter_var($mail, FILTER_VALIDATE_EMAIL) === false) 
                     {
                        $mailErr = 'A valid email address is required*';    
                     }
                    if (!preg_match('/^[0-9]{1,}/', $_POST['age'])) 
                     {
                        $ageErr = 'Only can be numeric*';               
                     }
                    if (!preg_match("/^[a-zA-Z0-9 _.,:'"'']+$/i", $_POST['address'])) 
                     {
                        $addErr = 'Address must be letters and numbers*';               
                     }
                     if (!preg_match("/^[0-9]{2,2}[-][0-9]{7,7}$/", $_POST['home'])) 
                     {
                        $hphErr= 'Phone must comply with this mask: 04-4XX1234*';               
                     }
                    if (!preg_match("/^[0-9]{3,3}[-][0-9]{7,7}$/", $_POST['hp'])) 
                     {
                        $hpErr= 'Phone must comply with this mask: 014-XXX1234*';               
                     }
                    if(strlen($name)<4)
                    {
                        $nameErr = 'Your username must between 4 to 12 characters*';
                    }
                    if (strlen($pass) < 6) 
                    {
                        $passErr = 'Your password must be at least 6 characters*';              
                    }        
        }
elseif(mysql_num_rows($result)==0)

如果$result==0,那么我的数据将插入到员工表中,但它不能工作

        {
                mysql_query("insert into employee(Dept_ID, Emp_Address, Emp_Age, Position, Emp_Username, Emp_Password, Emp_Fname, Emp_Lname, ContactNo_Home, ContactNo_HP, Emp_Email) 
                values('$dept','$add','$age','$pos','$name','$pass','$fname','$lname','$hph','$hp','$mail')");
        ?>
                        <script type="text/javascript">
                         alert('Registered successfully!');
                        </script>
        <?php
        }
        else
        {
        ?>
                        <script type="text/javascript">
                        alert("Username already in use!");                                                                           
                        </script>
        <?php    
        }
}

希望有人能帮我找出问题并解决它。非常感谢。

不知道您的确切模式,也不知道MySQL响应的错误,很难说这里到底有什么问题。调试(断点、跨步等)将帮助您确定您期望发生的事情是否真的发生了。

正如JohnnyJS所提到的,您似乎从未打开过与MySQL的连接(尽管正如ComFreek所提到的那样,这些MySQL_*函数已被弃用)。

  1. 建议您使用DBAL或ORM与数据库进行交互。有很多。至少是结账原则
  2. 调试代码。这可以在PHPStorm这样的编辑器中使用xdebug轻松完成。您甚至可能从未执行过插入查询
  3. 在应用程序之外执行查询,看看它们是否按预期工作
  4. 您很容易受到SQL注入的攻击,需要引用用户提供的值
  5. 如果您使用了一个框架,您甚至不需要直接与$_POST交互。看看Symfony——它是一个优秀的PHP框架
  6. 此外,我不建议像这里那样返回带有警报的脚本标记。用内联的相应错误更新表单要好得多——如果您使用Symfony,这将为您完成

希望这能有所帮助。祝你好运