2014-02-06 2 views
0

Я попытался изменить код на это, чтобы он подключался к БД раньше всего, но теперь он просто задерживается на verify.php, не перенаправляет, а данные не отправляются в БД.Данные регистрационной формы не отображаются в БД

 <?php 
if(isset($_POST['submit'])){ 
# connect to the database here 
$host="XXXXXXX"; // Host name 
    $username="XXXX"; // Mysql username 
    $password="XXXX"; // Mysql password 
    $db_name="XXXX"; // Database name 

    mysql_connect("$host", "$username", "$password")or die("cannot connect for insert"); 
    mysql_select_db("$db_name")or die("cannot select DB to insert data"); 

    $user_name = mysql_real_escape_string($_POST['user_name']); 
    $fname = mysql_real_escape_string($_POST['fname']); 
    $lname =  mysql_real_escape_string($_POST['lname']); 
    $email =  mysql_real_escape_string($_POST['email']); 
    $user_password = mysql_real_escape_string($_POST['password']); 

    $insert_query = "INSERT INTO teachers(`user_name`,`fname`,`lname`,`email`,`password`) 
    VALUES('".$user_name."$','".$fname."','".$lname."','".$email."','".$user_password."');"; 
    mysql_query($insert_query) or die(mysql_error()); 
    mysql_close(); 

    }; 
     ?> 
+0

если вы эхо $ запрос, то, что запрос будет напечатано? – Hassan

+0

Почему вы добавили эту функцию 'sprintf' в свою переменную '$ query'? Я бы подумал, что вы хотите иметь что-то вроде этого: '$ query = (" SELECT * FROM учителей WHERE user_name = '% s' LIMIT 1 ");' И в начале сделайте '$ user = mysql_real_escape_string ($ _ POST ['user_name']); 'для получения имени пользователя и дезинфекции входной строки. –

+0

И затем измените исходную переменную $ query в '$ query = 'SELECT * FROM teachers WHERE user_name ='". $ User. "'LIMIT 1"; ' –

ответ

1

Вы должны поставить or die(mysql_error()); в следующей строке:

$sql = mysql_query($query) or die(mysql_error()); 

Вместо:

mysql_real_escape_string($_POST['password']))or die(mysql_error()); 

Другое дело, что у вас есть неправильные if-else заявления.

Вы код, чтобы проверить, какое поле пусто должно быть в следующем if заявление:

if($row||empty($_POST['user_name'])|| empty($_POST['fname'])||empty($_POST['lname'])|| empty($_POST['email'])||empty($_POST['password'])|| empty($_POST['re_password'])||$_POST['password']!=$_POST['re_password']){ 
# if a field is empty, or the passwords don't match make a message 
# YOU SHOULD PUT YOUR CODE TO CHECK EMPTY FIELDS SEPARATELY HERE 
} 
else { 
    # If all fields are not empty, and the passwords match, 
} 
+0

Опять же, не отвечает на вопрос, почему ничего не отправляется в БД. Также код, который вы сказали заменить, совпадает с моим исходным кодом или был ошибкой? Я не получил то, что вы хотели, чтобы я сделал, чтобы изменить инструкции if else, потому что код идентичен. Как я могу просто упростить его, игнорировать проверку полей, я просто хочу отточить код, который подписывает пользователя, отправляет данные в БД, вот и проблема. – buttonitup

0

Вы должны изменить свой чек, если пользователь уже существует что-то вроде этого:

if(count($row) > 0) 

вместо только

if($row) 
+0

Согласовано, но все равно не отвечает на вопрос, почему ничего не отправляется в БД. – buttonitup

0

Если вы хотите протестировать только если данные вставлены, то вы t он закодировать это: версия

 <?php 
     if(isset($_POST['submit'])){ 

    $host=""; // Host name 
    $username=""; // Mysql username 
    $password=""; // Mysql password 
    $db_name="lurnn"; // Database name 

    /* sanitize post variables */  
    $user_name = mysql_real_escape_string($_POST['user_name']); 
    $fname = mysql_real_escape_string($_POST['fname']); 
    $lname =  mysql_real_escape_string($_POST['lname']); 
    $email =  mysql_real_escape_string($_POST['email']); 
    $user_password = mysql_real_escape_string($_POST['password']); 

    /* Database insert query */ 
mysql_connect($host, $username, $password)or die("cannot connect for insert"); 
mysql_select_db($db_name)or die("cannot select DB to insert data"); 
$insert_query = "INSERT INTO teachers(`user_name`,`f_name`,`l_name`,`email`,`password`) 
VALUES('".$user_name."','".$fname."','".$lname."','".$email."','".$user_password."')"; 
mysql_query($insert_query) or die(mysql_error()); 
mysql_close(); 


     }; 
      ?> 

MYSQLI_:

<?php 


if(isset($_POST['submit'])){ 
    $host = "host"; 
    $user = "user"; 
    $password = "password"; 
    $database = "database"; 


    /* sanitize post variables */  
    $user_name = mysql_real_escape_string($_POST['user_name']); 
    $fname = mysql_real_escape_string($_POST['fname']); 
    $lname =  mysql_real_escape_string($_POST['lname']); 
    $email =  mysql_real_escape_string($_POST['email']); 
    $user_password = mysql_real_escape_string($_POST['password']); 


    // open connection to database 
    $link = mysqli_connect($host, $user, $password, $database); 
     IF (!$link){ 
      echo ("Unable to connect to database!"); 
     } 
     ELSE { 
      //INSERT VALUES INTO DATABASE 
      $query = "INSERT INTO teachers(`user_name`,`f_name`,`l_name`,`email`,`password`) 
VALUES('".$user_name."','".$fname."','".$lname."','".$email."','".$user_password."')"; 
     mysqli_query($link,$query) or die(mysql_error()); 
     echo var_dump($query); 
     } 
//close connection to database 
     mysqli_close($link); 

    }; 


    ?> 

Если все это не удается, попробуйте следующее:

<?php 


function submit_form(){ 
    $host = ""; 
    $user = ""; 
    $password = ""; 
    $database = ""; 

    /* sanitize post variables */  
    $user_name = mysql_real_escape_string($_POST['user_name']); 
    $fname = mysql_real_escape_string($_POST['fname']); 
    $lname =  mysql_real_escape_string($_POST['lname']); 
    $email =  mysql_real_escape_string($_POST['email']); 
    $user_password = mysql_real_escape_string($_POST['password']); 


    // open connection to database 
    $link = mysqli_connect($host, $user, $password, $database); 
     IF (!$link){ 
      echo ("Unable to connect to database!"); 
     } 
     ELSE { 
      //INSERT VALUES INTO DATABASE 
      $query = "INSERT INTO teachers(`user_name`,`f_name`,`l_name`,`email`,`password`) 
VALUES('".$user_name."','".$fname."','".$lname."','".$email."','".$user_password."')"; 
     mysqli_query($link,$query) or die("Insert query failed"); 
     echo var_dump($query); 

     } 
//close connection to database 
     mysqli_close($link); 

    } 


$form = <<<EODuserform 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <title>Form</title> 
    </head> 
     <form action="{$_SERVER['PHP_SELF']}" method="POST" name="userform"> 
      <label for='user_name'>Username:</label></br> 
      <input type="text" name="user_name" id="first" maxlength="25" tabindex='1' VALUE="user_name" /></br> 
      <label for='fname'>First Name:</label></br> 
      <input type="text" name="fname" id="first" maxlength="25" tabindex='2' VALUE="firstname" /></br> 
      <label for='lname'>Last Name:</label></br> 
      <input type="text" name="lname" id='lastname' maxlength="25" tabindex='3' VALUE="lastname" /></br> 
      <label for='email'>E-mail:</label></br> 
      <input type="text" name="email" id='email' maxlength="100" tabindex='4' VALUE="email" /></br> 
      <label for='password'>Password:</label></br> 
      <input type="password" name="password" id='password' maxlength="25" tabindex='5' VALUE="password" /></br> 
      <label for='re-password'>Re-type password:</label></br> 
      <input type="password" name="re-password" id='re-password' maxlength="25" tabindex='6' VALUE="re-password" /></br> 
      <input type="submit" name="submit" value="Sign Up" tabindex='6' /> 
      </form> 
    </body> 
</html> 
EODuserform; 


IF(!IsSet($_POST['submit'])){ // Check if form is not send, if not display empty form. 

    echo $form; 
} 

ELSE{ 
// in the case you want to send something to the database use 
submit_form(); 
echo ('Thanks for submitting your form'); 
} 

?> 
+0

Я попробовал нижний код и получил кучу сообщений об ошибках, которые мне не подходят. Попробуйте зарегистрироваться на странице lurnn.com/signup.html, и вы увидите все сообщения об ошибках. – buttonitup

+0

@MattMcLaren вы забыли опубликовать ошибки. B.T.W. Думаю, я мог бы решить эту ошибку. Повторите попытку. Я удаляю двойные кавычки в 'mysql_connect'. –

+0

Спасибо, что нашли время, чтобы помочь ему высоко ценится.Раньше я мог кодировать это через пять секунд, но, видимо, в прошлом году многое изменилось. – buttonitup

Смежные вопросы