我正在建立一个网站并使用表格进行注册。我的error_log中没有任何错误。所以我无法理解我的问题究竟在哪里。我把我的代码放在这里也许你可以帮助我。
这段代码是我的注册函数:
public function storeUser($name, $surname, $email,$age, $sex, $status, $password)
{
try{
$uuid = uniqid('', true);
$hash = $this->hashSSHA($password);
$encrypted_password = $hash["encrypted"]; // encrypted password
$salt = $hash["salt"]; // salt
$stmt = $this->conn->prepare("INSERT INTO users(unique_id, name, surname, email, encrypted_password, age, sex, status, salt, created_at) VALUES(?,?,?,?,?,?,?,?,?,NOW())");
$stmt->bind_param("sssssssss", $uuid, $name, $surname, $email, $encrypted_password, $age, $sex, $status, $salt);
$result = $stmt->execute();
$stmt->close();
// check for successful store
if ($result)
{
$stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("ssssssssssss", $row_user_id, $row_user_name, $row_surname, $row_user_email, $row_user_encryptedpass, $row_user_salt, $row_age, $row_sex, $row_status , $row_user_createdat, $row_user_uniqueid, $row_user_updatedat);
$stmt->execute();
$user = $stmt->get_result()->fetch_assoc();
$user = array(
'id' => $row_user_id,
'name' => $row_user_name,
'surname' => $row_surname,
'email' => $row_user_email,
'encrypted_password' => $row_user_encryptedpass,
'salt' => $row_user_salt,
'age' => $row_age,
'sex' => $row_sex,
'status' => $row_status,
'created_at'=>$row_user_createdat,
'unique_id' => $row_user_uniqueid,
'updated_at' => $row_user_updatedat,
);
$stmt->close();
return $user;
}
else
{
return false;
}
}
catch(Exception $e)
{
System.out.println("Exception : " + $e.getMessage());
}
}//end of storeUser
/**
* Get user by email and password
*/
public function getUserByEmailAndPassword($email, $password)
{
$stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
if ($stmt->execute())
{
$stmt->bind_result($row_user_id, $row_user_name, $row_surname, $row_user_email, $row_user_encryptedpass, $row_user_salt, $row_age, $row_sex, $row_status , $row_user_createdat, $row_user_uniqueid, $row_user_updatedat);
$stmt->fetch();
$user = array(
'id' => $row_user_id,
'name' => $row_user_name,
'surname' => $row_surname,
'email' => $row_user_email,
'encrypted_password' => $row_user_encryptedpass,
'salt' => $row_user_salt,
'age' => $row_age,
'sex' => $row_sex,
'status' => $row_status,
'created_at'=>$row_user_createdat,
'unique_id' => $row_user_uniqueid,
'updated_at' => $row_user_updatedat,
);
$stmt->close();
return $user;
}
else
{
return NULL;
}
}
这是我上面调用的另一个php:
require_once 'include/Functions-reg-log.php';
$db = new DB_Functions();
// json response array
try{
$response = array("error" => FALSE);
if (isset($_POST['first_name']) && isset($_POST['last_name']) && isset($_POST['email']) && isset($_POST['Age']) && isset($_POST['gender']) && isset($_POST['status']) && isset($_POST['password']) && isset($_POST['t_and_c']))
{
// receiving the post params
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$age = $_POST['age'];
$sex = $_POST['sex'];
$status = $_POST['status'];
$password = $_POST['password'];
// 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($name,$surname, $email, $age, $sex, $status, $password);
if ($user) {
// user stored successfully
$response["error"] = FALSE;
$response["uid"] = $user["unique_id"];
$response["user"]["name"] = $user["name"];
$response["user"]["surname"] = $user["surname"];
$response["user"]["email"] = $user["email"];
$response["user"]["age"] = $user["age"];
$response["user"]["sex"] = $user["sex"];
$response["user"]["status"] = $user["status"];
$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 is missing!";
$response["name"] = $_Post["name"];
echo json_encode($response);
}
}catch (Exception $e) {
System.out.println("Exception : " + $e.getMessage());
}
?>
这是我的html代码,其中包含以下格式:
<div class="row">
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group form-actions">
<input type="text" name="first_name" id="first_name" class="form-control input-lg" placeholder="First Name" tabindex="1">
</div>
</div>
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<input type="text" name="last_name" id="last_name" class="form-control input-lg" placeholder="Last Name" tabindex="2">
</div>
</div>
</div>
<div class="form-group">
<input type="email" name="email" id="email" class="form-control input-lg" placeholder="Email Address" tabindex="3">
</div>
<div class="form-group">
<input type="age" name="Age" id="Age" class="form-control input-lg" placeholder="Age" tabindex="4" >
</div>
<div class="col-xs-2 col-sm-2 col-md-2"> <span class="radio">
<input type="radio" name="gender" id="male" class="o-hidden" value="1" tabindex="5" align="middle">Male
</span> </div>
<div class="col-xs-10 col-sm-10 col-md-10"> <span class="radio">
<input type="radio" name="gender" id="female" class="o-hidden" value="0" tabindex="6" align="middle">Female
</span> </div>
<div class="col-xs-2 col-sm-2 col-md-2"> <span class="radio">
<input type="radio" name="status" id="female" class="o-hidden" value="1" tabindex="7" >Enduser
</span> </div>
<div class="col-xs-3 col-sm-3 col-md-3"> <span class="radio">
<input type="radio" name="status" id="female" class="o-hidden" value="0" tabindex="8" >Company
</span> </div>
<div class="col-xs-2 col-sm-2 col-md-2"> <span class="radio">
<input type="radio" name="status" id="female" class="o-hidden" value="10" tabindex="9" >Both
</span> </div>
<div class="row">
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<input type="password" name="password" id="password" class="form-control input-lg" placeholder="Password" tabindex="10">
</div>
</div>
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<input type="password" name="password_confirmation" id="password_confirmation" class="form-control input-lg" placeholder="Confirm Password" tabindex="11">
</div>
</div>
</div>
<div class="row">
<div class="col-xs-1 col-sm-1 col-md-1"> <span class="button-checkbox">
<input type="checkbox" name="t_and_c" id="t_and_c" class="o-hidden" value="1" tabindex="12" >
</span> </div>
<div class="col-xs-11 col-sm-11 col-md-11">
<p>By clicking <strong class="label label-primary">Register</strong>, you agree to the <a href="#" data-toggle="modal" data-target="#t_and_c_m">Terms and Conditions</a> set out by this site, including our Cookie Use.</p>
</div>
</div>
<hr class="colorgraph">
<div class="row">
<div class="col-xs-6 col-md-6">
<input type="submit" value="Register" class="btn btn-primary btn-block btn-lg" tabindex="13">
</div>
<div class="col-xs-6 col-md-6"><a href="#" class="btn btn-success btn-block btn-lg" tabindex="14" >Sign In</a></div>
</div>
</form>
</div>
</div>
这是我得到的错误来自我的php:
{"error":true,"error_msg":"Unknown error occurred in registration!"}
这就是我得到的全部。 更新: 我改变了一小部分代码,现在我得到了这个:
public function storeUser($first_name, $last_name, $email,$Age, $gender, $status, $password)
{
try{
$uuid = uniqid('', true);
$hash = $this->hashSSHA($password);
$encrypted_password = $hash["encrypted"]; // encrypted password
$salt = $hash["salt"]; // salt
$stmt = $this->conn->prepare("INSERT INTO users VALUES(?,?,?,?,?,?,?,?,?,NOW())");
$stmt->bind_param("sssssssss", $uuid, $name, $surname, $email, $encrypted_password, $age, $sex, $status, $salt);
$result = $stmt->execute();
$stmt->close();
// check for successful store
if ($result)
{
$stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s",$row_user_email);
$stmt->execute();
$user = $stmt->get_result()->fetch_assoc();
$user = array(
'id' => $row_user_id,
'name' => $row_user_name,
'surname' => $row_surname,
'email' => $row_user_email,
'encrypted_password' => $row_user_encryptedpass,
'salt' => $row_user_salt,
'age' => $row_age,
'sex' => $row_sex,
'status' => $row_status,
'created_at'=>$row_user_createdat,
'unique_id' => $row_user_uniqueid,
'updated_at' => $row_user_updatedat,
);
$stmt->close();
return $user;
}
else
{
return false;
}
}
catch(Exception $e)
{
System.out.println("Exception : " + $e.getMessage());
}
}//end of storeUser
错误: 致命错误:在第63行的/home/eberrybox/public_html/home/include/Functions-reg-log.php中的非对象上调用成员函数bind_param()
更新2: 我添加了这个: die(“Errormessage:”。$ stmt-&gt; error);
我得到了这个: 注意:尝试在第73行的/home/eberrybox/public_html/home/include/Functions-reg-log.php中获取非对象的属性 ERRORMESSAGE:
答案 0 :(得分:0)
我认为它失败的原因是由于第二个查询中出现了复制/粘贴错误:
$stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("ssssssssssss", $row_user_id, $row_user_name, $row_surname, $row_user_email, $row_user_encryptedpass, $row_user_salt, $row_age, $row_sex, $row_status , $row_user_createdat, $row_user_uniqueid, $row_user_updatedat);
$stmt->execute();
在此查询中,您不需要绑定这么多参数。试试这个:
$stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $row_user_email);
$stmt->execute();