mysql
  • pdo
  • 2012-12-23 55 views 0 likes 
    0

    我有一個問題在處理寄存器註冊用戶與PDO

    這裏是該函數的代碼:這給了我

    <?php 
    include $_SERVER['DOCUMENT_ROOT']. "/config/config.php"; 
    $conn = new PDO('mysql:host=' . $ip . ';dbname=' . $database, $username, $password); 
    
    function registerUser($username, $password, $passwordagain, $email, $mcname) 
    { 
    $validusername= "/^[a-z0-9]+$/"; 
    $validpassword= "/^[A-Za-z0-9]+$/"; 
    $validemail= "/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/"; 
    $validmcname= "/^[A-Za-z0-9]+$/"; 
    $error = 0; 
    
    if(strlen($username)<4 || strlen($username)>24) 
    { 
    $error = 1; 
    } 
    if(strlen($password)<6 || strlen($password)>24) 
    { 
    $error = 1; 
    } 
    if(strlen($mcname)<4 || strlen($mcname)>24) 
    { 
    $error = 1; 
    } 
    if(!preg_match($validusername, $username)) 
    { 
    $error = 1; 
    } 
    if(!preg_match($validpassword, $password)) 
    { 
    $error = 1; 
    } 
    if(!preg_match($validemail, $email)) 
    { 
    $error = 1; 
    } 
    if(!preg_match($validmcname, $mcname)) 
    { 
    $error = 1; 
    } 
    if($password != $passwordagain) 
    { 
    $error = 1; 
    } 
    $userexistquery = $conn->query('SELECT * FROM users WHERE username=' . $username); 
    $userexist = $userexistquery->fetch(); 
    if(count($userexist) != 0) 
    { 
    $error=1; 
    echo "<div class='erroralert'>Username already exists!</div>"; 
    } 
    $emailexistquery = $conn->query('SELECT * FROM users WHERE email=' . $email); 
    $emailexist = $emailexistquery->fetch(); 
    if($emailexist != 0) 
    { 
    $error=1; 
    echo "<div class='erroralert'>E-mail already exists!</div>"; 
    } 
    if($error != 1) 
    { 
    $encryptedpassword = hash('sha512', $password); 
    $registeruser = $conn->query("INSERT INTO users(username, password, email, mcname) VALUES ('$username', '$encryptedpassword', '$email', '$mcname')"); 
    echo "<div class='successalert'>Succesfully registred</div>"; 
    } 
    else 
    { 
    echo "<div class='erroralert'>An error occured during registration.</div>"; 
    } 
    } 
    ?> 
    

    的錯誤是:

    Notice: Undefined variable: conn in C:\xampp\htdocs\functions\functions.php on line 45

    Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\functions\functions.php on line 45

    +0

    請參閱[PHP變量範圍](http://us.php.net/manual/en/language.variables.scope.php)。 [MySQL Documentation](http://dev.mysql.com/doc/refman/5.5/en/)。 [PDO文檔](http://us.php.net/pdo)。 [PDO教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 – DCoder

    回答

    2

    你實例你的變量$conn以外的函數。您必須將其作爲參數傳遞才能在內部使用它。

    相關問題