2015-01-11 5 views
0

Мой код работает нормально (я не получаю никаких эров), но запрос INSERT INTO, похоже, не работает, поскольку данные никогда не помещаются в базу данных.Данные не вставляются в базу данных

Вот код:

EDIT: я слегка отредактировали код, чтобы он сделал бы логический смысл, но он по-прежнему не добавляет данные в таблицу. (Я даже снял если заявление полностью и просто оставил запрос в и оно не добавлять.)

<?php 

    //connect to user database 
    include("db_connect.php"); 

    //set variables 
    $firstName = $_POST['firstName']; 
    $lastName = $_POST['lastName']; 
    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $gender = $_POST['gender']; 
    $date = date('Y/m/d H:i:s a'); 

    //check if email exists 
    $db_query = "SELECT * FROM users WHERE email LIKE '$email'"; 
    $db_result = mysql_query($db_query); 
    if(!$db_result) 
    { 
     $query = "INSERT INTO users (lastName, firstName, email, password, gender, signup) VALUES ('$lastName', '$firstName', '$email', '$password', '$gender', '$date')"; 
     mysql_query($query); 
     echo 'You have been successfully registered. Please <a href="login.php">Click Here</a> to log in.'; 
    } 
    else { 
     echo 'That email is already in use. <a href="login.php">Click Here</a> to return to the sign up page.'; 
    } 

?> 
+4

До тех пор, пока '$ email_taken' становится ресурсом результата с помощью успешного запроса, он всегда будет оценивать true. Вместо этого вам нужно проверить наличие строк в наборе результатов. – Crackertastic

+2

Вы должны использовать команды mysqli вместо mysql в PHP a, так как функции mysql_ * устарели по многим причинам и в конечном итоге будут удалены. – JAL

+1

** Danger **: вы используете [** устаревший ** API баз данных] (http://stackoverflow.com/q/12859942/19068) и должны использовать [современную замену] (http: // php. нетто/ручной/EN/mysqlinfo.api.choosing.php). Вы также уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, что современный API упростит [защиту] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php). – Quentin

ответ

1

Вы должны заменить

if($email_taken) 

с

if(mysql_num_rows($email_taken)) 
+0

Это просто дает мне ошибку «mysql_num_rows() ожидает, что параметр 1 будет ресурсом, boolean given« – yitzih

+0

Это скорее всего, потому что ваш запрос возвращает false (из-за ошибки) –

1

Я бы сказал, это будет больше похоже:

//check if email exists 
$db_query = "SELECT * FROM users WHERE email='{$email}'"; 
$res = mysql_query($db_query); 
$email_taken = mysql_num_rows($res); 

if($email_taken == 1) 
{ 
    echo 'That email is already in use. <a href="login.php">Click Here</a> to return to the sign up page.'; 
} 
else { 
    $query = "INSERT INTO users (lastName, firstName, email, password, gender, signup) VALUES ('$lastName', '$firstName', '$email', '$password', '$gender', '$date')"; 
    mysql_query($query); 
    echo 'You have been successfully registered. Please <a href="login.php">Click Here</a> to log in.'; 
} 
Смежные вопросы