Php 数据未输入数据库。。?
我正在尝试使用php、json和jquery请求为我的用户制作一个注册表单。我认为php代码很好,但我认为问题在于jquery函数。我对这一切都不熟悉。你们能帮我吗?如果我错了,请原谅,请随时提建议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 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);
}
?>