我似乎无法弄清楚为什么这个脚本不起作用,基本上下面的脚本在我的本地XAMPP服务器中运行得非常好,它完全插入细节,但我决定将它上传到主机服务器,当用Postman测试时它不会插入细节。
我实际上得到了这个结果“发生了一些错误,请再试一次。”
这是图片
这是脚本,这是StudentRegister.php脚本
<?php
require_once '../include/DbOperations.php';
$response = [];
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['StudentsEmail']) and isset($_POST['StudentUsername']) and isset($_POST['Password'])) {
//operate the data further
$db = new DbOperations();
$result = $db->createUser($_POST['StudentsEmail'], $_POST['StudentUsername'], $_POST['Password']);
if ($result == 1) {
$response['error'] = false;
$response['message'] = "User registered successfully";
} elseif ($result == 2) {
$response['error'] = true;
$response['message'] = "Some error occurred please try again";
} elseif ($result == 0) {
$response['error'] = true;
$response['message'] = "It seems you are already registered, please choose a different email and username";
}
} else {
$response['error'] = true;
$response['message'] = "Required fields are missing";
}
} else {
$response['error'] = true;
$response['message'] = "Invalid Request";
}
echo json_encode($response);
这是DbOperations.php脚本
<?php
class DbOperations {
private $con;
function __construct() {
require_once dirname(__FILE__) . '/DbConnect.php';
$db = new DbConnect();
$this->con = $db->connect();
}
/*CRUD -> C -> CREATE */
public function createUser($studemail, $studusername, $studpass) {
if ($this->isUserExist($studemail, $studusername)) {
return 0;
} else {
//$password = md5($studpass);
$stmt = $this->con->prepare("INSERT INTO `studentdetails` (`Id`, `StudentFullName`, `Gender`, `Age`, `NationalIdentification`, `RegistrationNumber`, `StudentsEmail`, `StudentUsername`, `Password`, `PhoneNumber`, `YearofStudy`, `Semester`, `StudentImage`) VALUES (NULL,NULL, NULL,NULL,NULL,NULL,?,?,?,NULL,NULL,NULL,NULL);");
//$stmt->bind_param("sss",$studemail,$studusername,$password);
$stmt->bind_param("sss", $studemail, $studusername, $studpass);
if ($stmt->execute()) {
return 1;
} else {
return 2;
}
}
}
public function userLogin($studusername, $studpass) {
//$password = md5($studpass);
$stmt = $this->con->prepare("SELECT Id FROM studentdetails WHERE StudentUsername = ? AND Password = ?");
//$stmt->bind_param("ss",$studusername,$password);
$stmt->bind_param("ss", $studusername, $studpass);
$stmt->execute();
$stmt->store_result();
return $stmt->num_rows > 0;
}
public function getUserByUsername($studusername) {
$stmt = $this->con->prepare("SELECT * FROM studentdetails WHERE StudentUsername = ?");
$stmt->bind_param("s", $studusername);
$stmt->execute();
return $stmt->get_result()->fetch_assoc();
}
public function isUserExist($studemail, $studusername) {
$stmt = $this->con->prepare("SELECT Id FROM studentdetails WHERE StudentsEmail = ? OR StudentUsername = ?");
$stmt->bind_param("ss", $studemail, $studusername);
$stmt->execute();
$stmt->store_result();
return $stmt->num_rows > 0;
}
}
?>
答案 0 :(得分:0)
让脚本像本地一样远程工作:
1)在适当的端口上进行网络访问(默认为3306)。有时会出现网络管理员,防火墙,各种其他挑战,并且端口根本不可用。验证您的数据包在往返工作中是否成功,以请求此数据并随之返回。
2)权限:MySQL用户是基于位置的。有权从localhost访问数据库的用户(即:本地XAMPP服务器)可能具有相同的名称,但可以从其他位置访问并被拒绝访问。找到具有同一命名用户的多个凭据的服务器并不罕见。
&#34;摆锤@本地&#34; /&#34; bob@127.0.0.1" /&#34;摆锤@%&#34; /&#34; Bob@192.168.22.7& #34;在技术上都是不同的用户,并且可以具有不同的访问凭证,从而导致从DB到各个字段的任何地方都有不同的权限。
3)记录是你的朋友。服务器端和客户端日志记录是可用的,这通常更直接地说明您的问题(虽然通常是神秘的,谷歌也是你的朋友,可以翻译&#34;工程师说&#34;英语)。我经常在谷歌搜索一个怪异的错误信息后发现自己回到了这里。请记住:服务器上没有错误并不意味着你已经死了,mysql客户端也可以记录(mysqli内置错误消息),结果通常会告诉你&#34;没有回应&#34;结果。如果客户端没有响应结果且服务器中没有任何结果,则可能会被网络阻止,例如。