views:

50

answers:

1

Having trouble inserting new records into a table. Anybody care to help?

<?php include('config.php'); ?>
<?php 

if(!empty($_POST['forename']) && !empty($_POST['surname']) && !empty($_POST['email']) && !empty($_POST['emailconfirm']) && !empty($_POST['password'])) {
    if($_POST['email'] == $_POST['emailconfirm']) {
        $forename = mysql_real_escape_string($_POST['forename']);
        $surname = mysql_real_escape_string($_POST['surname']);
        $email = mysql_real_escape_string($_POST['email']);
        $password = md5(mysql_real_escape_string($_POST['password']));
        register();
    }
    else { $errormessage = "Emails do not match"; }
}
else { $errormessage = "Not all fields filled"; }

function register() {
$check = mysql_query("SELECT * FROM Users WHERE EmailAddress = '".$email."'");
    if (mysql_num_rows($check) == 1) {
        $errormessage = "Account already exists with the email address provided";
    }
    else {
        $register = mysql_query("INSERT INTO Users (EmailAddress, Password, Forename, Surname) VALUES('".$email."', '".$password."', '".$forename."', '".$surname."')");
        $errormessage = "Account Added";
    }
}
?>

I think the problem lies within the MySQL Query Statement?

+1  A: 

The variables in your register function are out of scope. Need to globalize them.

function register() {
    global $email, $password, $forename, $surname, $errormessage;

    $check = mysql_query("SELECT * FROM Users WHERE EmailAddress = '".$email."'");
    if (mysql_num_rows($check) == 1) {
        $errormessage = "Account already exists with the email address provided";
    }
    else {
        $register = mysql_query("INSERT INTO Users (EmailAddress, Password, Forename, Surname) VALUES('".$email."', '".$password."', '".$forename."', '".$surname."')");
        $errormessage = "Account Added";
    }
}
Aaron W.
*Yikes!* Don't reference them as globals. Pass them in. There is *no reason* for them to be considered globals here.
Charles
Thanks for this.
ritch