0

这是我的代码

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

if(isset($_POST["Add"])) {

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

if $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    
        }
}

希望有人可以帮助我找出问题并解决它。谢谢!

4

1 回答 1

0

不知道您的确切架构,或者 MySQL 响应的错误,很难确切地说出问题出在哪里。调试(断点、跨步等)将帮助您确定您期望发生的事情是否正在实际发生。

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

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

希望这可以帮助。祝你好运!

于 2013-09-17T03:54:21.327 回答