开发者

I am a new programmer and I can not get my fields to be stored in the database from a registration form

If I declare 开发者_如何学编程a global variable such as a database connection of $mysqli how do I use that in a class. i am trying to use it in my user class. Do i store it as a public variable in the class or as a global in the function itself. I also think there is something wrong with my following code but I may be wrong.

class USER 
{

    function __constructor()
    {
    }

    /*
    * adds a new user
    * returns FALSE on error
    * returns user id on success
    */
    function add_member($name, $email, $password)
    {
        global $mysqli;

        $query = "INSERT INTO members
              SET 
              user_name = {'$name'},
              user_email = {'$email'},
              password = ['$password'}";

        $success = $mysqli -> query ($query);         

        if (!$success || $mysqli -> affected_rows == 0)
        {
            echo "<p> An error occurred: you just are not tough enough!!!</p>";           
            return FALSE;
        } 

        $uid = $mysqli -> insert_id;
        return $uid;

    }
} // end class
$uc = new USER();

?>

    <?php

require_once ('includes/classes/database.php');
require_once('includes/classes/user.php');
require_once('includes/header.php');


// if user submits a new registration
if (isset($_POST['name'],$_POST['email'],$_POST['pwd'],$_POST['pwd2']))
{
    // validate input fields
    $name = $_POST['name'];
    $email = $_POST['email'];
    $password = $_POST['pwd'];
    $password2 = $_POST['pwd2'];

    // if error fall through and redisplay page with errors

    // if no errors update database and redirect to homepage
    if ($uc->add_member($name, $email, $password) === FALSE)
    {
        echo "System Error. damn if I know what to do";
    } 
    else
    {
        header("location: homepage.php");
    }
}


You um... don't. Instead use a variable inside of the class:

class USER 
{
    private $mysql;

    function __constructor($mysqli)
    {
        $this->mysqli = $mysqli;
    }

    function add_member($name, $email, $password)
    {
        $mysqli = $this->mysqli;

/* yada yada */

Couple of issues by the way:

// You want the ' outside of the {}
$query = "INSERT INTO members
          SET 
          user_name = '{$name}',
          user_email = '{$email}',
          password = '{$password}'";// there was a [ not a {

You also want to call mysqli_real_escape_string on all of those variables. Or better yet use mysqli_bind_param and a prepared statement.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜