我正在尝试将值插入 MySQL 数据库,但没有成功。我曾多次尝试编辑 SQL 语句,但均未成功。当我在 phpMyAdmin 中运行相同的插入语句时,它起作用了。我真的不知道我的代码有什么问题。最令人沮丧的部分是没有错误。 mysqli_error($conn)
不返回任何内容。
以下代码是我一直在研究的:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
$servername = "XXXXXXXXXXXXXXX";
$database = "RRRRRRRRRRRRR";
$username = "DDDDDDDD";
$password = "ZZZZZZ";
$data = json_decode(file_get_contents('php://input'), true);
$uid = $data["id"];
$firstname = $data["firstname"];
$lastname = $data["lastname"];
$email = $data["email"];
$password = $data["password"];
$activationCode = $data["activationCode"];
$conn = mysqli_connect($servername, $username, $password, $database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}else{
echo "Connected successfully";
}
$sql = "INSERT INTO studentinfo (studentid, firstname, lastname, email, mypass, activationCode)
VALUES ('$uid', '$firstname', '$lastname', '$email', '$password', '$activationCode')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
print mysqli_error($conn);
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
</body>
</html>
以下是 echo $SQL 返回的内容:
INSERT INTO studentinfo (studentid, firstname, lastname, email, mypass, activationCode) VALUES ('androidid', 'wendu', 'Chao', 'eeeee@yahoo.com', 'xxxxxxxx', '0ecccvvjdkfkf')
答案 0 :(得分:0)
我注意到了一些事情。
值 '$uid', '$firstname', '$lastname', '$email', '$password', '$activationCode'
未在代码中设置。我假设他们来自外面,即 $_POST
您还会遇到包含由注入可能性引起的特殊字符的字符串的问题。每一个'
都会破坏sql语句并且会导致问题。
最好使用绑定参数,而不是直接将值传递到语句中。
$sql = $conn->prepare("INSERT ...");
$sql->bind_param("is", $uid,$firstname);
$sql->execute();
密码没有经过哈希处理。最好不要在数据库中安全明文密码。
我认为如果您显示 sql echo $sql;
的值,它会告诉您语句的结构。您可以将其复制并粘贴到 PHPMyAdmin 中,然后查看该语句是否像您预期的那样工作。 $UID 似乎是一个整数值,但您将其作为字符串传入。
$sql = "INSERT INTO studentinfo (studentid, firstname, lastname, email, mypass, activationCode)
VALUES ($uid, '$firstname', '$lastname', '$email', '$password', '$activationCode')";