PHP检查现有值后插入MYSql

时间:2016-09-22 12:03:20

标签: php mysql

我正在尝试在我的应用程序中注册用户,我试图检查年龄是否存在然后停止注册过程,我编写了我的代码来注册用户并且工作得很好但是当我尝试使用check_age函数验证注册时即使年龄已经存在,它也不能很好地工作并且仍然允许注册,任何人都可以告诉我我的代码错过了什么: 这是我的代码:

<?php
if($_SERVER["REQUEST_METHOD"]=="POST")
{
       require "init.php";

       creat_Student();
}
function creat_Student()
{
    global $con;
    $firstname=$_POST["firstname"];
    $lastname=$_POST["lastname"];
    $age=$_POST["age"];

    if(strcmp(check_age(), '0') == 0)
    {
    $query="Insert Into student(firstname,lastname,age) values ('$firstname','$lastname','$age');";
    mysqli_query($con,$query);
    mysqli_close($con);
    }
    else 
    echo "not true";

}
function check_age()
{
    global $con;
    $age=$_POST["age"];
    echo " $age";
    $temp_arr=array();

    $query="SELECT * FROM  student where age ='{$age}'; ";
    $result=mysqli_query($con,$query);
    $num_of_rows=mysqli_num_rows($result);

    if($num_of_rows==0)
    return '0';
    else 
    return '1';

}

2 个答案:

答案 0 :(得分:1)

正如上面提到的评论,需要进行一些消毒。

但这是我的建议......

  1. 更改check_age()功能并在其中传递年龄参数,如下所示,并返回$num_of_rows

    function check_age($age)
    {
       global $con;
    
       $query="SELECT * FROM  student where age =".$age;
       $result=mysqli_query($con,$query);
       return mysqli_num_rows($result);
    }
    
  2. 然后在creat_Student()函数if中,条件会像......一样改变。

    function creat_Student()
    {
      global $con;
      $firstname=$_POST["firstname"];
      $lastname=$_POST["lastname"];
      $age=$_POST["age"];
    
      if(!check_age($age))
      {
        $query="Insert Into student(firstname,lastname,age) values ('$firstname','$lastname','$age');";
        mysqli_query($con,$query);
        mysqli_close($con);
     }
     else
        echo "not true";
    }
    
  3. 谢谢,杰伊。

答案 1 :(得分:0)

我添加了另一个字段,你应该将它添加到数据库并形成数据库中应该是唯一VAR_CHAR的“userName”。
但是如果你想学习真正的PHP,你应该去寻求更多的OOP版本。
为DB创建一个抽象的Entity类,然后数据库表可以像类Stundent扩展Entity一样扩展它,并且有get,insert,delete,update等方法。(你应该看看一些PHP框架)。
在这里,我尝试对您的代码进行快速简便的修正:

if($_SERVER["REQUEST_METHOD"]=="POST")
{
    require "init.php";

    addStudent();
}

function addStudent()
{
    /**
     * @var mysqli $conn
     */
    global $conn;
    $userName  = $_POST['userName'];
    $firstName = $_POST["firstName"];
    $lastName = $_POST["lastName"];
    $age = $_POST["age"];

    $query = "SELECT * FROM  student WHERE username ='$userName'; ";
    if($stmt = $conn->prepare($query)) {
        $stmt->execute();
        $result = $stmt->get_result();
        if($result->num_rows == 0) {
            $query = "INSERT INTO student(`firstname`, `lastname`, `age`) VALUES (?, ?, ?)";
            if($stmt = $conn->prepare($query)) {
                $stmt->bind_param("ssi", $firstName, $lastName, $age);
                $stmt->execute();
            }
        }
    } else {
        echo "Student already registered in the database!";
    }
}