In meiner Anwendung verwende ich 2 PHP-Dateien, wo man die alle funtions für die Anwendung erforderlichen Informationen enthält und die andere ist retrive und die Daten zurück an den BenutzerKann nicht einfügen Daten binden param
Meine erste PHP-Datei senden DB_Functions.php ist , die den folgenden Code
<?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();
}
/**
* Storing new user
* returns user details
*/
public function storeUser($name,$sex,$dob,$email,$college,$password,$latitude,$longitude,$pass) {
$uuid = uniqid('', true);
$hash = $this->hashSSHA($password);
$encrypted_password = $hash["encrypted"]; // encrypted password
$salt = $hash["salt"]; // salt
$stmt = $this->conn->prepare("INSERT INTO CFLASH_USERS(Name, sex, dob, mail, college, password, latitude, longitude, pass, salt, created_at) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())");
$stmt->bind_param("ssssssssss", $name, $sex, $dob, $email, $college, $password, $latitude, $longitude, $pass, $salt);
$result = $stmt->execute();
$stmt->close();
// check for successful store
if ($result) {
$stmt = $this->conn->prepare("SELECT * FROM CFLASH_USERS WHERE mail = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$user = $stmt->get_result()->fetch_assoc();
$stmt->close();
return $user;
} else {
return false;
}
}
/**
* Encrypting password
* @param password
* returns salt and encrypted password
*/
public function hashSSHA($password) {
$salt = sha1(rand());
$salt = substr($salt, 0, 10);
$encrypted = base64_encode(sha1($password . $salt, true) . $salt);
$hash = array("salt" => $salt, "encrypted" => $encrypted);
return $hash;
}
/**
* Decrypting password
* @param salt, password
* returns hash string
*/
public function checkhashSSHA($salt, $password) {
$hash = base64_encode(sha1($password . $salt, true) . $salt);
return $hash;
}
}
?>
Meine zweite pHP-Datei register.php enthält
<?php
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
// json response array
$response = array("error" => FALSE);
if (isset($_POST['name']) && isset($_POST['email']) && isset($_POST['password'])) {
// receiving the post params
$name = $_POST['name'];
$sex = $_POST['sex'];
$dob = $_POST['dob'];
$email = $_POST['email'];
$college = $_POST['college'];
$password = $_POST['password'];
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];
$pass = $_POST['pass'];
// create a new user
$user = $db->storeUser($name, $sex, $dob, $email, $college ,$password, $latitude, $longitude, $pass);
if ($user) {
// user stored successfully
$response["error"] = FALSE;
$response["uid"] = $user["mail"];
$response["user"]["name"] = $user["Name"];
$response["user"]["sex"] = $user["sex"];
$response["user"]["dob"] = $user["dob"];
$response["user"]["email"] = $user["mail"];
$response["user"]["college"] = $user["college"];
$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 (name, email or password) is missing!";
echo json_encode($response);
}
?>
Ich kann die Daten nicht einfügen. Ich habe nach dem Post meathod gesucht, um falsch zu liegen, aber es ist nicht falsch. Also dachte ich, dass es einen Fehler mit bind_param() geben wird. Bitte lassen Sie mich wissen, wo der Fehler ist und eine Lösung, um es zu beheben.
Bitte erklären Sie mir über "Call to undefined Methode mysqli_stmt :: get_result()"
'get_result()' ist 'Nur mit mysqlnd.' Check [die php docs] (http://php.net/manual/en/mysqli-stmt.get-result.php) und stellen Sie sicher, dass Sie es haben – Matt
in Ordnung, aber das ist in If Bedingung Block vorhanden, so zuerst Bind Param-Funktion sollte ausgeführt werden, die nicht ausgeführt wird oder möglicherweise Fehler bei dieser Codezeile generiert wird. Daher wird der if-Block nicht aktiviert, so dass kein Fehler als Aufruf der Methode mysqli_stmt :: get_result() generiert wird. – Karrthik
Dieser Treiber ist nicht Teil Ihres Codes und gehört zum Server. Bitte überprüfen Sie diese Antwort [hier] (http://stackoverflow.com/a/1475996/3140646) und überprüfen Sie. – Matt