2013-02-23 2 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

답변

0

HTMl의 이름이 $_POST에서 사용중인 키와 일치하지 않습니다. 이름이 name 인 성 및 성을 게시하고 각각 $_POST['FirstName']$_POST['LastName']으로 가져 오려고합니다.

+0

수정 된, 여전히 같은 오류. – stark

+0

정확한 스크립트에 확실히 게시 하시겠습니까? 그렇다면,'var_dump ($ _ POST)'할 때 어떤 일이 발생합니까? – juco

+0

예, 변수가 모두 올바르게 게시되지만 데이터는 여전히 데이터베이스에 없습니다. – stark

0

3 가지 문제가 있습니다.

1. 혼합 $_GET[]$_POST[]. 로 form method = post 사용 $_POST[]

2. 양식과 PHP 사이의 변수의 이름. 형식이 fname이고 php가 $firstname입니다. 또한 텍스트 입력의 이름과 ID는 동일해야합니다.

3. 변수가 제대로 설정되지 않은 경우 경고 메시지가 나타납니다. 이 문제를 해결하려면 isset(). 아래의 코드는 문제를 보여줍니다. 위의 데모는 isset()와 ternary operator를 사용하고 난 당신의 코드에서 활용하는 방법을 설명했다

<?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> 

(post.php로 저장).

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