<?php
$conn= new mysqli("localhost", "my_user", "my_password", "world"); //changed for the sake of this question
$username = $_POST['Username'];
$password = sha1($_POST['Password']);
$email = $_POST['Email'];
$firstname = $_POST['FirstName'];
$lastname = $_POST['LastName'];
$insert = 'INSERT INTO User(FirstName, LastName, Email, Username, Password, Type) VALUES ("'.$firstname.'", "'.$lastname.'", "'.$email.'", "'.$username.'", "'.$password.'", 'User');';
$result = $conn->query($insert);
?>
<form method='post' action='regprocess.php'>
<fieldset class="register">
<h2>Register</h2>
<ul>
<li><label for="FirstName">First Name: </label> <input type="text" name="FirstName" id="FirstName"></li>
<li><label for="LastName">Last Name: </label> <input type="text" name="LastName" id="LastName"></li>
<li><label for="Email">Email: </label><input type="email" name="Email" id="Email"></li>
<li><label for="Username">Username: </label><input type="text" name="Username" id="Username"></li>
<li><label for="Password">Password: </label><input type="password" name="Password" id="Password"></li>
<li><input type="submit" value="Register"></li>
</ul>
</fieldset></form>
表单和顶级sql代码位于不同的文件中。
各位大家好,我正在尝试插入一个mysql表,它不会插入到我的表中。我试图让它通过注册表插入。我不太确定为什么它不起作用。一些见解会很棒。如果你需要我提供我会的表格,但我不认为这是它不起作用的部分原因。
答案 0 :(得分:1)
你使用mysqli
是一件好事,但你使用它的方法不正确,并且让自己暴露在一些非常严重的SQL注入错误中,其后果可能很严重。
这是您应该采取的措施来实际修复示例中存在的众多问题:
$stmt = $conn->prepare('INSERT INTO User(FirstName, LastName, Email, Username, Password, Type) VALUES (?,?,?,?,?,?)');
$stmt->bind_param($firstname, $lastname, $email, $username, $password, 'User');
$stmt->execute();
$result = $stmt->get_result();
占位符的主要优点是不必担心如何正确引用数据,它会自动为您完成。它还在很大程度上避免了在你的陈述中使用两种不同的引号。
如果您不将 ANY 和所有数据的占位符用于SQL,则可能会遇到严重问题。你必须对此保持警惕。
答案 1 :(得分:0)
您的上一个参数值是单引号。替换为双引号,使其显示为“”'。$ password。'“,”User“);';
答案 2 :(得分:0)
我不懂PHP。我会尝试用MySQL来帮助你。
我认为插入查询中的引号存在问题。
尝试从您的values子句中删除单引号。
答案 3 :(得分:0)
作为建议,始终使用“从SQL查询文本的开头到结尾;
$insert = 'INSERT INTO User(FirstName, LastName, Email, Username, Password, Type) VALUES ("'.$firstname.'", "'.$lastname.'", "'.$email.'", "'.$username.'", "'.$password.'", 'User');';
就像:
$insert = "INSERT INTO User(`FirstName`, `LastName`, `Email`, `Username`, `Password`, `Type`) VALUES ('$firstname', '$lastname', '$email', '$username', '$password', 'User');";
在您的查询中,您拥有“用户”,并且您需要转义“as”
并且不要忘记在将内容添加到数据库之前始终清理内容