Php 数据未输入数据库。。?

Php 数据未输入数据库。。?,php,jquery,html,json,Php,Jquery,Html,Json,我正在尝试使用php、json和jquery请求为我的用户制作一个注册表单。我认为php代码很好,但我认为问题在于jquery函数。我对这一切都不熟悉。你们能帮我吗?如果我错了,请原谅,请随时提建议 **php code goes here:** <!--register.php--> <?php require_once 'DB_Functions.php'; $db = new DB_Functions();

我正在尝试使用php、json和jquery请求为我的用户制作一个注册表单。我认为php代码很好,但我认为问题在于jquery函数。我对这一切都不熟悉。你们能帮我吗?如果我错了,请原谅,请随时提建议

    **php code goes here:**

            <!--register.php-->
       <?php



require_once 'DB_Functions.php';
   $db = new DB_Functions();

    // json response array
    $response = array("error" => FALSE);
    if (isset($_POST['fname']) && isset($_POST['lname']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['mobile'])) {
        var_dump('here');
        // receiving the post params
        $fname = $_POST['fname'];
        $lname = $_POST['lname'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $mobile = $_POST['mobile'];

        // check if user is already existed with the same email
        if ($db->isUserExisted($email)) {
            // user already existed
            $response["error"] = TRUE;
            $response["error_msg"] = "User already existed with " . $email;
            echo json_encode($response);
        } else {
            // create a new user
            $user = $db->storeUser($fname, $lname, $email, $password, $mobile);
            if ($user) {
                // user stored successfully
                $response["error"] = FALSE;
                $response["uid"] = $user["id"];
                $response["user"]["fname"] = $user["fname"];
                $response["user"]["lname"] = $user["lname"];
                $response["user"]["email"] = $user["email"];
                $response["user"]["created_at"] = $user["created_at"];
                $response["user"]["updated_at"] = $user["updated_at"];
                echo json_encode($response);
            } else {
                // user failed to store
                $response["error"] = TRUE;
                $response["error_msg"] = "Unknown error occurred in registration!";
                echo json_encode($response);
            }
        }
    } else {
        $response["error"] = TRUE;
        $response["error_msg"] = "Required parameters (fname, lname, email, password or mobile) is missing!";
        echo json_encode($response);
    }
    ?>
**php代码如下:**
请听一下DB_Functions.php代码

        <?php

class DB_Functions {

    private $conn;

    // constructor
    function __construct() {
        require_once 'DB_Connect.php';
        // connecting to database
        $db = new Db_Connect();
        $this->conn = $db->connect();
    }

    // destructor
    function __destruct() {

    }

    /**
     * Storing new user
     * returns user details
     */
    public function storeUser($fname, $lname, $email, $password, $mobile) {
        $uuid = uniqid('', true);
        $hash = $this->hashSSHA($password);
        $encrypted_password = $hash["encrypted"]; // encrypted password
         $stmt = $this->conn->prepare("INSERT INTO users(fname, lname, email, password, mobile) 
          VALUES('".$fname."', '".$lname."', '".$email."', '".$password."', '".$mobile."')";
        $result = $stmt->execute();
        $stmt->close();

    // check for successful store
       if ($result) {
            $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = '$email'");
            $stmt->execute();
            $user = $stmt->get_result()->fetch_assoc();
            $stmt->close();

            return $user;
        } else {
            return false;
        }
    }
  }

从HTML代码传递的值中没有密码字段,在php中,您试图读取密码值。从php中删除密码字段或在HTML中添加密码字段以获得所需的输出


-谢谢

我看不出你的jQuery有任何问题

调试ajax时的一些有用提示是使用firebug或chromes网络窗格,以确保发送正确的post变量,并且不会在服务器端脚本上返回错误


潜在问题

我确实发现你的退货类型有问题。如果您从 “register.php”

这会产生问题。 简单解决方案,将内容类型标题设置为JSON:

header('Content-Type: application/json');
echo json_encode($response);
*注意:这必须在回音或打印任何内容之前完成

文件:


建议

  • 将事件绑定到提交处理程序
  • 在ajax方法之外构造对象
  • 运行前端验证
  • 使用$.post包装器


$(函数(){
//ajax在表单提交中的应用
$(“#注册”)。提交(功能(事件){
//防止重新加载默认页面
event.preventDefault();
//创建post对象
var positionRegistrationData={
名称:$(“#名称”).val(),
密码:$(“#密码”).val()
};
//对于调试,请在发送前转储它
console.log(positionRegistrationData);
//验证它(应该是抽象的)
if(!!postaserRegistrationData.name&&!!postaserRegistrationData.password){
//发送到服务器
$.post(“backend.php”、positionRegistrationData、函数(数据){
log(“回复:+数据”);
});
}否则{
//无效时抛出
警报(“验证触发器”);
}
});
});

好,现在试试这个。。编辑

DB_Functions.php文件中

<?php

 class DB_Functions {
    private $db;

    // constructor
    function __construct() {
     require_once 'config.php';
     try {
        $hostname = DB_HOST ;
        $dbname   = DB_DATABASE;
        $this->db = new PDO("mysql:host=$hostname;dbname=$dbname", DB_USER, DB_PASSWORD);
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
}

    /**
     * Storing new user
     * returns user details
     */
    public function storeUser($fname, $lname, $email, $password, $mobile) {  
        try {
            $hash = md5($password);
            $sql = "INSERT INTO db_name(fname, lname, email, password, mobile) VALUES ('$fname', '$lname', '$email', '$hash', $mobile)";
            $result = $this->db->query($sql);

            if ($result) {
                // get user details
                $id = $this->db->lastInsertId(); //last inserted id
                $sql = "SELECT * FROM db_name WHERE email = $email";
                $result = $this->db->query($sql);
                $no_of_rows = $result->fetchColumn();
                // returns confirmation message if completed
                if ($no_of_rows > 0) {
                    return "existsandcompleted";
                }
            }

        }
        catch (Exception $e) {
            $error = 'Error accessing database: ' . $e->getMessage();

        }

    }
}

?>

你是说在jquery部分我必须包含密码作为id吗?…是的,你必须在jquery部分包含密码。变量名也不匹配,在HTML中我们传递'firstName',在PHP中我们搜索'fname'。请确保两个文件中的变量相同。很抱歉,没有一个是有效的。。你测试代码了吗?..没有..单击时出现错误消息“什么都没有发生..页面保持静态”后端可能会出现更深层次的问题。我建议尝试返回(从注册脚本)echo json\u encode($\u POST);并在控制台中查看,以确保正确发布。如果(isset…),您的值是否通过php传递。。??我累了,把瓦鲁倒进垃圾堆里。。它过去了。。。但是我发现if(isset…)中有一个括号问题。你能编辑ma代码并发送吗?我现在出错了。请检查DB_函数。php代码正确吗?查询错误。。试试这个-->$stmt=$this->conn->prepare(“插入到用户中(唯一的_-id、fname、lname、电子邮件、加密的_-password、mobile、created_-at)”值(“..uuid.”、“$fname.”、“$lname.”、“$email.”、“$encrypted_-password.”、“$mobile.”、NOW());嘿..伙计,我已经按照你说的更正了代码。。!!但遗憾的是,它没有被插入到数据库中…这是正确的代码吗。。请检查它-解析错误:语法错误,意外“;”在第28行的C:\xampp\htdocs\web\u login\u api\DB\u Functions.php中,他们在DB\u Function.php中有一个错误….plzz您能发现它吗..m无法解决它
<form id="register" method="post" action="#">
    <input id="name" type="text" name="name" placeholder="Enter Name" />
    <input id="password" type="password" name="password" />
    <input type="submit" name="submit" value="Sign Up" />
</form>
<script>
    $(function(){
        //ajax on form submit
        $("#register").submit(function (event) {
            //prevent default page reload
            event.preventDefault();
            //create post object
            var postUserRegistrationData = {
                name: $("#name").val(),
                password: $("#password").val()
            };

            //for debugging dump it before sending
            console.log(postUserRegistrationData);

            //validate it (should be abstracted)
            if(!!postUserRegistrationData.name && !!postUserRegistrationData.password) {
                //post to the server
                $.post( "backend.php", postUserRegistrationData, function(data){
                    console.log("The reply:"+data);
                });
            } else {
                //throw if not valid
                alert("Validation Trigger");
            }
        });
    });
</script>
<?php

 class DB_Functions {
    private $db;

    // constructor
    function __construct() {
     require_once 'config.php';
     try {
        $hostname = DB_HOST ;
        $dbname   = DB_DATABASE;
        $this->db = new PDO("mysql:host=$hostname;dbname=$dbname", DB_USER, DB_PASSWORD);
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
}

    /**
     * Storing new user
     * returns user details
     */
    public function storeUser($fname, $lname, $email, $password, $mobile) {  
        try {
            $hash = md5($password);
            $sql = "INSERT INTO db_name(fname, lname, email, password, mobile) VALUES ('$fname', '$lname', '$email', '$hash', $mobile)";
            $result = $this->db->query($sql);

            if ($result) {
                // get user details
                $id = $this->db->lastInsertId(); //last inserted id
                $sql = "SELECT * FROM db_name WHERE email = $email";
                $result = $this->db->query($sql);
                $no_of_rows = $result->fetchColumn();
                // returns confirmation message if completed
                if ($no_of_rows > 0) {
                    return "existsandcompleted";
                }
            }

        }
        catch (Exception $e) {
            $error = 'Error accessing database: ' . $e->getMessage();

        }

    }
}

?>
<?php
   require_once 'DB_Functions.php';
   $db = new DB_Functions();

    // json response array
    $response = array("error" => FALSE);
    if (isset($_POST['fname']) && isset($_POST['lname']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['mobile'])) {

        // receiving the post params
        $fname = $_POST['fname'];
        $lname = $_POST['lname'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $mobile = $_POST['mobile'];

         // create a new user
        $user = $db->storeUser($fname, $lname, $email, $password, $mobile);

        if ($user) {
            // user stored successfully
            $response["error"] = FALSE;
            $response["uid"] = $user["id"];
            $response["user"]["fname"] = $user["fname"];
            $response["user"]["lname"] = $user["lname"];
            $response["user"]["email"] = $user["email"];
            $response["user"]["created_at"] = $user["created_at"];
            $response["user"]["updated_at"] = $user["updated_at"];
            echo json_encode($response);
        } else {
            // user failed to store
            $response["error"] = TRUE;
            $response["error_msg"] = "Unknown error occurred in registration!";
            echo json_encode($response);
        }

    } else {
        $response["error"] = TRUE;
        $response["error_msg"] = "Required parameters (fname, lname, email, password or mobile) is missing!";
        echo json_encode($response);
    }
?>