2015-09-22 4 views
0

Следующий код вставляет данные только в поля «email» и «password» и 0 в роль (это нормально). Поля первого и последнего имени пустые. Я не могу понять, почему.PDO Insert Only Inserting Some Data

My DB имеет: идентификатор, имя_файла, 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 переменной здесь, а не сравнивая нуль:

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

пожалуйста, используйте

==

знак вместо

+0

WOW ...... Я не могу сказать вам, насколько глупым я себя чувствую. Это серьезно расстроило меня примерно на час. Спасибо за помощь. –

+0

Не беспокойтесь. Бывает :) – satroy