我是一名新程序员,我无法将我的字段从注册表中存储到数据库中

时间:2011-08-24 00:16:11

标签: php

如果我声明一个全局变量,例如$ mysqli的数据库连接,我该如何在类中使用它。我想在我的用户类中使用它。我是将它作为公共变量存储在类中还是作为函数本身的全局变量存储。我也认为以下代码有问题,但我可能错了。

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");
    }
}

1 个答案:

答案 0 :(得分:4)

你是......不......而是在类中使用变量:

class USER 
{
    private $mysql;

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

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

/* yada yada */

顺便说一下问题:

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

您还想在所有这些变量上调用mysqli_real_escape_string。或者更好的是使用mysqli_bind_paramprepared statement