我的PHP代码没有添加到我的数据库

时间:2017-05-29 21:21:07

标签: php mysql

我是php新手,我正在尝试创建一个注册表单。我不知道为什么我的代码没有向数据库添加新用户,它不会给任何错误消息只是转到白屏。我不知道它是否连接到DB,但我相信它会给我一个错误信息,对吗?

这是我的PHP代码:

<?php 
   define('DB_HOST', 'localhost');
   define('DB_NAME', 'class_rate');
   define('DB_USER', 'root');
   define('DB_PASSWORD', 'password');

   $con = mysqli_connect(DB_HOST, DB_USER,DB_PASSWORD) or die("Failed to connect" . mysqli_error());

   $db = mysqli_select_db($con, DB_NAME) or die("Failed to connect" . mysqli_error());

   function NewUser(){

    $name = $_POST['nome'];
    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $query = "INSERT INTO users (nome_user,email_user,passw_user) VALUES ('$name','$email','$password')"; 
    $data = mysqli_query($query)or die(mysql_error()); 
    if($data) { 
        echo "YOUR REGISTRATION IS COMPLETED..."; 
    }
   }

 function SignUp(){
    if (!empty($_POST['email'])) {
       $query = mysqli_query("SELECT * FROM users WHERE email_user = $_POST[email]' AND passw_user = '$_POST[password]'") or die(mysqli_error());
    }

    if(!$row = mysqli_fetch_array($query) or die(mysqli_error()) ){
        NewUser();
    }
    else{
        echo "Email already registered!";
    }
 }

if (isset($_POST['submit'])) {
   SignUp();
}


?>

2 个答案:

答案 0 :(得分:1)

您的脚本中存在一些问题。

  1. 您没有看到错误消息,因为mysqli_error()需要连接作为参数,实例中为$con,而"SELECT * FROM users WHERE email_user = $_POST[email]' AND passw_user = '$_POST[password]'")中缺少一个单引号应为"SELECT * FROM users WHERE email_user = '$_POST[email]' AND passw_user = '$_POST[password]'")
  2. 可变范围,在您的职能function NewUser()function SignUp()中,他们无法访问$con$db,解决方案很少:

    我。要使变量为GLOBAL,不建议这样做,因为在PHP中使用GLOBAL关键字通常不是一个好习惯。

    II。将$con作为参数传递给函数,因此在此实例中,您的函数将变为function NewUser($con)function SignUp($con)

    III。使用类来解决这个问题。

  3. 3.对于您的查询语句,SELECT col1, col2只需要您需要的列而不是SELECT *作为最佳做法。

    4.检查POST参数的空值以及输入参数的一些清理以防止注入和不需要的标签/ javascripts也是一个好主意。

    如果您有任何其他问题,请与我们联系。

答案 1 :(得分:-2)

在这里试试这段代码

<?php 
   define('DB_HOST', 'localhost');
   define('DB_NAME', 'class_rate');
   define('DB_USER', 'root');
   define('DB_PASSWORD', 'password');

   $con = mysqli_connect(DB_HOST, DB_USER,DB_PASSWORD) or die("Failed to connect" . mysqli_error());

   $db = mysqli_select_db($con, DB_NAME) or die("Failed to connect" . mysqli_error());

   function NewUser(){
    global $con;
    $name = $_POST['nome'];
    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $query = "INSERT INTO users (nome_user,email_user,passw_user) VALUES ('$name','$email','$password')"; 
    $data = mysqli_query($con, $query)or die(mysqli_error()); 
    if($data) { 
        echo "YOUR REGISTRATION IS COMPLETED..."; 
    }
   }

 function SignUp(){
    global $con;
    if (!empty($_POST['email'])) {
       $query = mysqli_query($con, "SELECT * FROM users WHERE email_user = $_POST[email]' AND passw_user = '$_POST[password]'") or die(mysqli_error());
    }

    if(!$row = mysqli_fetch_array($query) or die(mysqli_error()) ){
        NewUser();
    }
    else{
        echo "Email already registered!";
    }
 }

if (isset($_POST['submit'])) {
   SignUp();
}


?>