在添加代码以检查用户是否已经存在于数据库之前,脚本工作正常,这是我无法弄清楚为什么它不工作的部分。这是一个Android应用程序的测试环境,所以我更喜欢最简单的版本。
<?php
require_once 'connect_db.php';
$conn = new mysqli($hostname, $admin_name, $admin_pwd, $database);
if($conn->connect_error) {
die($conn->connect_error);
}
if(isset($_REQUEST["username"]) && isset($_REQUEST["email"]) && isset($_REQUEST["password"]) && isset($_REQUEST["user_type"])) {
echo "Welcome ". $_REQUEST['username']. "<br />";
$name = $_REQUEST['username'];
$email = $_REQUEST['email'];
$pwd = $_REQUEST['password'];
$user_type = $_REQUEST['user_type'];
// first check if user already exists
$query = "SELECT 1 FROM users WHERE `EMAIL` = '$email'";
$result = $conn->query($query);
if (!$result) die("Database access failed: " . $conn->error);
if (mysqli_num_rows($result) > 0) {
echo "Error inserting user into database. User already exists";
} else {
// then do insert new user
$query_insert_user = "INSERT INTO users (`NAME`, `EMAIL`, `PWD`, `USER_TYPE`) VALUES ('$name', '$email', '$pwd', '$user_type')";
if ($conn->query($query_insert_user) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $query_insert_user . "<br>" . $conn->error;
}
}
$result->close();
$conn->close();
} else {
echo "Error inserting user into database. Missing user parameters";
}
?>
改变行
$query = "SELECT 1 FROM users WHERE EMAIL
= '$email'";
$query = "SELECT 1 FROM users WHERE EMAIL
= '".$email.";
我无法测试它,但乍一看,我建议:
- 将您的查询更改为Jesper的建议(虽然"应该扩展您的变量,但是…)
- ,可以用
mysqli_num_rows($result)
代替$result->num_rows
进行OOP吗?查看PHP手册mysqlli -result.num-rows
好运。
来自朋友的一些示例代码可以正常工作。我改成:
// first check if user already exists
$query = "SELECT 1 FROM users WHERE NAME = '$name' OR EMAIL = '$email'";
$result = mysqli_fetch_array(mysqli_query($conn,$query));
if (isset($result)){
echo 'username or email already exist';