2015-09-22 88 views
0

以下代碼僅將數據插入到「email」和「password」字段,並將0插入角色(這很好)。名字和姓氏字段爲空。我無法弄清楚爲什麼。PDO插入僅插入一些數據

我的DB有:身份證,FNAME,LNAME,電子郵件,角色,密碼

我已經嘗試了許多不同的解決方案,並已敲我的頭撞在牆上。我能夠弄清楚$ fname和$ lname似乎沒有綁定或插入,但是如果我在腳本的頂部回顯它們,它們就會被識別出來。

<? 
require_once('connection.php'); 

if (isset($_POST['submit'])) { 
    $errMsg = ''; 
    //username and password sent from Form 
    $email = trim($_POST['email']); 
    $password = trim($_POST['password']); 
    $fname = trim($_POST['fname']); 
    $lname = trim($_POST['lname']); 
    if ($email == '' or $password == '' or $email == '' or $fname = '' or $lname = '') 
     $errMsg = 'All Fields Are Required.<br>'; 

    if ($errMsg == '') { 
     $sql = "SELECT COUNT(email) AS num FROM users WHERE email = :email"; 
     $stmt = $databaseConnection->prepare($sql); 
     $stmt->bindValue(':email', $email); 
     $stmt->execute(); 
     $row = $stmt->fetch(PDO::FETCH_ASSOC); 
     if ($row['num'] > 0) { 
      die('That email address already exists! <a href=\"register.php\">Please try again.</a>'); 
     } 
     $passwordHash = password_hash($password, PASSWORD_BCRYPT, array("cost" => 12)); 
     $stmt = $databaseConnection->prepare("INSERT INTO users (fname, lname, email, password) VALUES (:fname, :lname, :email, :password)"); 
     $stmt->bindValue(':fname', $fname); 
     $stmt->bindValue(':lname', $lname); 
     $stmt->bindValue(':email', $email); 
     $stmt->bindValue(':password', $passwordHash); 

     $result = $stmt->execute(); 
     if ($result) { 
      header('Location:index.php'); 
      echo 'User created. Please log in.'; 
      die(); 
     } 
    } 
} 
?> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Test Register</title> 
</head> 
<body> 

<div align="center"> 
<div style="width:300px; border: solid 1px #006D9C; " align="left"> 

<?php 
if (isset($errMsg)) { 
    echo '<div style="color:#FF0000;text-align:center;font- size:12px;">'.$errMsg.'</div>'; 
} 
?> 
<div style="background-color:#006D9C; color:#FFFFFF; padding:3px;"><b>Register</b></div> 
<div style="margin:30px"> 
<form action="" method="post"> 
<label>First Name :</label><input type="text" name="fname" class="box"/><br /><br /> 
<label>Last Name :</label><input type="text" name="lname" class="box"/><br /><br /> 
<label>Email :</label><input type="email" name="email" class="box"/><br /><br /> 
<label>Password :</label><input type="password" name="password" class="box" /><br/><br /> 
<input type="submit" name='submit' value="Submit" class='submit'/><br /> 
</form> 
</div> 
</div> 
</div> 

</body> 
</html> 

回答

0

你實際上是給FNAME和LNAME變量賦值爲null而不是在這裏比較空:

if($email == '' or $password=='' or $email=='' or $fname='' or $lname='') 

請使用

==

標誌,而不是

=

+0

哇......我不能告訴你我有多愚蠢。這讓我非常沮喪,大概一個小時。感謝您的幫助。 –

+0

不用擔心。它發生了:) – satroy