2013-02-23 129 views
0

问题标题显示我使用PHP和SQL创建注册表单。无论何时点击注册按钮,我都会在表单中的所有变量上得到一个未定义的变量错误,也不会在数据库中输入任何内容。如果您可以提出任何建议,请将我的头发拉出。PHP SQL注册表格

这里是表单提交页面到:

<?php 
include('dbconfig.php'); 
?> 

<?php 

echo $_GET["FirstName"]; 
?> 

<?php 

$db = new PDO('mysql:host=localhost;dbname=mydatabase;', 'root', ''); 

$firstname = $_POST['FirstName']; 
$lastname = $_POST['LastName']; 
$username = $_POST['username' ]; 
$password = $_POST['Password']; 
$email  = $_POST['Email']; 
$startdate = $_POST['StartDate']; 
$year  = $_POST['Year']; 



$password = md5($password); 



$sql = "INSERT into supervisor (FirstName, LastName, UserName, Password, Email,      
Company) VALUES (:FirstName, :LastName, :UserName, :Password, :Email)"; 

$statement = $db->prepare($sql); 

$params = array(
':FirstName' => $firstname, 
':LastName' => $lastname, 
':Password' => $password, 
':Email'  => $email, 
':StartDate' => $startdate, 
':Year'  => $year, 
':Company' => $company 
); 

的DBCONFIG文件:

<?php 

$config['db'] = array(
'host'  => 'localhost', 
'username' => 'root', 
'password' => '', 
'dbname' => 'mydatabase', 

); 

$db = new PDO('mysql:host='. $config['db']['host'] .';dbname='. $config['db'] 
['dbname'], $config['db']['username'], $config['db']['password']); 


?> 

最后登记PHP文件(只是形式):

<div class="container"> 
    <form id="regform" class="form-signin" action='staffRegister.php' method='Post'  
onsubmit="return validateForm()"/> 
    <img src="logo.png" width="160" height="50"> <h2 class="form-signin-heading">Staff  

Registration</h2> 


     <div> 
      <label for="name">First Name: </label> 
      <input id="fname" name="name" type="text" class="input-        

block-level" maxlength="35" onFocus="if(this.value=='name')this.value='';" onblur = 
"checkField(this)"/> 
      <span id="Alpha" style="display:none;">Please use letters 

only.</span> 
     </div> 
     <div> 
      <label for="name">Last Name: </label> 
      <input id="lname" name="name" type="text" class="input- 

block-level" maxlength="35" onFocus="if(this.value=='name')this.value='';" onblur = 

"checkField1(this)"/> 
      <span id="Alpha2" style="display:none;">Please use letters 

only.</span> 
     </div> 
     <div> 
      <label for="name">UserName: </label> 
      <input id="username" name="name" type="text" class="input- 

block-level" maxlength="12" /> 

     </div> 
     <div> 
      <label for="email">E-mail Ad:</label> 
      <input id="email" placeholder="@kent.ac.uk"name="Email" 
type="text" class="input-block-level" onchange="return validateEmail();"/></br> 
      <span id="spanEmail" style="display:none;">Please use your  
Kent Email.</span> 

     </div> 
     <div> 
      <label for="pass1">Password:</label> 
      <input id="pass1" name="pass1" type="password" 
class="input-block-level" maxlength="12" /> 
      <span id="pass1Info">At least 6 characters: letters, 
numbers and '_'</span> 
     </div> 
     <div> 





    <center><input type='Submit' name='Submit' value="Register" class="btn btn- 
primary"/ > </input></center> 
    </form> 

任何帮助真的很感激,谢谢。

+0

为什么不只是绑定到'POST'变量? – Kermit 2013-02-23 18:14:01

回答

0

HTMl中的名称与您在$_POST中使用的键不符。您发布两个名字和姓氏用name的名称,并试图分别$_POST['FirstName']$_POST['LastName']来接他们。

+0

修正,但仍然相同的错误。 – stark 2013-02-23 18:47:52

+0

您确定发布正确的脚本吗?如果是这样,当你'var_dump($ _ POST)'时会发生什么? – juco 2013-02-23 18:49:39

+0

是的,变量现在都正确地发布,但是数据在数据库中仍然不存在 – stark 2013-02-23 19:09:38

0

您有3个问题。

1.Mixing $_GET[]$_POST[]。 as form method = post use $_POST[]

2.在form和php之间命名变量。即fname的形式和$firstname在PHP中。此外,文本输入的名称和ID应该相同。

3.当变量没有正确设置时,出现警告。要解决此问题,请使用isset()。下面的代码说明了这个问题。(另存为post.php中)

<?php 
echo "Test for $_POST & isset()<br>"; 
$test1 = isset($_POST['test1']) ? $_POST['test1'] : ''; 
$test2 = $_POST['test2']; 
echo $test1; 
echo "<br>"; 
echo $test2; 
?> 
<form action="post.php" method="post"> 
<input name="test1" type="checkbox" value="1"> 
<input name="test2" type="checkbox" value="2"> 
<input type="submit"> 
</form> 

前面的演示中使用isset()函数和ternary operator,我已经说明了如何利用它在你的代码。

$fname = isset($_POST['$fname']) ? $_POST['$f'] : ''; 
$lname = isset($_POST['$lname']) ? $_POST['$lname'] : ''; 
etc