请帮助,我已经过了几个小时而且没有进一步。研究过这个,直到我脸色发青,但没有什么对我有用!我试图用PHP编写注册表单。我有一个包含所有用户信息的用户表和一个用户名和密码的帐户表。 users表中的主键是userid,这是帐户表中的外键。我试图将数据从一个表单插入到两个表中,但我一直在获取外键约束。我的代码发布在下面,任何帮助都将非常感谢!
<?php
if(!$_POST['submit']){
echo "<table border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n";
echo "<form method=\"post\" action=\"register.php\">\n";
echo "<tr><td colspan=\"2\" align=\"center\">Registration Form</td></tr>\n";
echo "<tr><td>First Name</td><td><input type=\"text\" name=\"fname\"></td></tr>\n";
echo "<tr><td>Last Name</td><td><input type=\"text\" name=\"lname\"></td></tr>\n";
echo "<tr><td>DOB</td><td><input type=\"date\" name=\"dob\"></td></tr>\n";
echo "<tr><td>Contact Number</td><td><input type=\"text\" name=\"contactno\"></td></tr>\n";
echo "<tr><td>Email Address</td><td><input type=\"text\" name=\"email_address\"></td></tr>\n";
echo "<tr><td>Username</td><td><input type=\"text\" name=\"username\"></td></tr>\n";
echo "<tr><td>Password</td><td><input type=\"password\" name=\"password\"></td></tr>\n";
echo "<tr><td>Confirm</td><td><input type=\"password\" name=\"confirm\"></td></tr>\n";
echo "<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Register\"></td></tr>\n";
echo "</form></table>\n";
}else {
$fname = protect($_POST['fname']);
$lname = protect($_POST['lname']);
$dob = protect($_POST['dob']);
$contactno = protect($_POST['contactno']);
$email_address = protect($_POST['email_address']);
$username = protect($_POST['username']);
$password = protect($_POST['password']);
$errors = array();
if(!$horsename){
$errors[] = "Username is not defined!";
}else {
$sql4 = "INSERT INTO 'users' (`fname`,`lname`,`dob`,`contactno`,`email_address`) VALUES ('".$fname."','".$lname."','".$dob."','".$contactno."','".$email_address."')";
$res4 = mysql_query($sql4) or die(mysql_error());
$sql4 = "INSERT INTO 'account' (username,password) VALUES ('".$username."','".md5($password)."')";
$res4 = mysql_query($sql4) or die(mysql_error());
echo "You have successfully registered with the username <b>".$username."</b> and the password of <b>".$password."</b>!";
}
}
?>
&#13;
答案 0 :(得分:0)
如果在帐户表中将用户标识定义为外键,则应在插入帐户时将其添加到插入查询中。
答案 1 :(得分:0)
一句忠告。请不要使用这种代码,因为它很容易注入SQL。想象一下,当我作为名字输入以下内容时:
mark'); drop table users; --
执行的SQL语句将是
INSERT INTO users (`fname`,`lname`,`dob`,`contactno`,`email_address`) VALUES ('mark'); drop table users;
ObRef:http://xkcd.com/327/
将有效删除用户表。但是,除非你的protect()函数处理这个问题,否则你最好使用绑定变量:http://php.net/manual/en/mysqli-stmt.bind-param.php
此外,您的电子邮件正则表达式并未捕获所有可能的情况 - 请参阅此处进行讨论:Using a regular expression to validate an email address
PHP代码中的错误:使用$ lname而不是lname
我会考虑使用框架来处理表单,插入,更新Yii,Laravel,Symfony,Zend,CakePHP等记录来执行此操作 - 除非您的目标是学习如何进行低级处理< / p>