2012-08-28 4 views
0

간단한 사용자 등록 페이지를 작성하고 간단한 DBCONNECTOR 클래스를 사용하려고합니다. 데이터베이스에 사용자를 보내려 할 때 mysql_query() 오류가 발생합니다.이 PHP 코드와 클래스는 다음과 같습니다. 내가 문제를 db 클래스에 mysql_query 에러가 발생했습니다.

를 해결하는 데 도움이 내 dbconnector 클래스입니다 :

<?php 
    require_once 'UConfig.inf.php'; 
    class udbcl extends USettings{ 
     var $link; 
     var $myquery; 
     function UDbconnect(){ 
      $DBinfo=USettings::GSettings(); 
      $DBhost=$DBinfo['UDbhost']; 
      $DBname=$DBinfo['UDbname']; 
      $DBusername=$DBinfo['UDbusername']; 
      $DBpassword=$DBinfo['UDbpassword']; 
      $this->link=mysql_connect($DBhost,$DBusername,$DBpassword); 
      mysql_select_db($DBname); 

     } 
     function UQuery($myquery){ 
      $this->link=$myquery; 
      return mysql_query($myquery, $this->link); 

     } 
     function UFetch($result){ 
     return mysql_fetch_array($result); 
     } 
     function UDbclose(){ 
      mysql_close($this->link); 

     } 
    } 

?> 

이 내 register.php 페이지입니다 : 나는 t을하려고하면

<?php 
require_once ('UConfig/UDbconnector.php'); 
$myinfoadd = new udbcl(); 
if (isset($_POST['username'])) { 
    $myq = "INSERT INTO userinfo(username,password,email,telphon) VALUES('$_POST[username]','$_POST[password]','$_POST[email]','$_POST[telnumber]')"; 
    $myinfoadd->UQuery($myq); 
    $myinfoadd->UDbclose(); 
    echo "You registration is Success!"; 
    sleep(3); 
    header('Location:index.php'); 
} else { 
    print <<<hldoc 
    <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>U S R R</title></head><body><form method="POST" action="register.php" ><b>User Name:</b> <input type="text" name="username" /><br/><b>User Password:</b><input type="password" name="password" /><br/><b>User Email:</b><input type="email" name="email" /><br/><b>User Tel:</b><input type="telnumber" name="telnumber" /><br/><input type ="submit" name="submit" value="Register"/></form></body></html> 
hldoc; 
} 
?> 

O 사용자를 등록 나는 같은 다음과 같은 오류를 얻을 :

경고 :는 mysql_query()를 : \ XAMPP \ htdocs를 \ uzu \ UConfig \ UDbconnector.php 라인 : 공급 인수는 C에 유효한 MySQL의 링크 자원 아닙니다 18

경고 : mysql_close() : 공급 인수는 C에 유효한 MySQL의 링크 자원되지 않습니다 : \ XAMPP \ htdocs를 \ \ UConfig \ UDbconnector.php uzu 라인 (25)

당신의 등록에 성공입니다!

경고 : C : \ xampp \ htdocs \ uzu \ register.php의 이미 보낸 헤더 정보 (C : \ xampp \ htdocs \ uzu \ UConfig \ UDbconnector.php : 18에서 시작된 출력)를 수정할 수 없습니다.

+2

정확히 어디에서 'UDbconnect'를 호출합니까? 그리고 왜 클래스 변수'$ this-> link' (리소스)를'$ myquery' (문자열)로 재설정하고'UQuery'를 호출 할 때마다 원래 값을 덮어 쓰시겠습니까? – mellamokb

+4

질문에 대답하는 데 도움이되지는 않지만 mysql_ * 함수 사용을 중단해야합니다. 그들은 더 이상 사용하지 않을 것입니다. 대신 [PDO] (http://php.net/manual/en/book.pdo.php) (PHP 5.1 이상 지원) 또는 [mysqli] (http://php.net/manual/en/book)를 사용하십시오. mysqli.php) (PHP 4.1부터 지원). 어느 것을 사용해야할지 모르겠다면 [이 기사를 읽으십시오] (http://www.deprecatedphp.com/mysql_/). – Matt

+0

전달하는 쿼리에'$ this-> link'를 설정하고 있습니다. 이것은 문자열입니다. – Matt

답변

0
function UQuery($myquery){ 
    $this->link=$myquery; 
    return mysql_query($myquery, $this->link); 
} 

위의 기능 라인 (10)은 동일합니다 :

function UQuery($myquery){ 
    $this->link=$myquery; 
    return mysql_query($myquery, $myquery); 
} 

다시 할당하지 마십시오 $this->link 당신도 잘해야합니다.

UPDATE는

또한 링크를 초기화하지 나타났습니다. 클래스 생성자에서이 작업을 수행하거나 을 생성자로으로 전달해야합니다.

class udbcl extends USettings{ 
    var $link; 
    var $myquery; 

    public function __construct($dbLink = null) { 
     if (is_null($dbLink)) { 
      $dbLink = $this->UDbconnect(); 
     } 
     $this->link = $dbLink; 
    } 

    private function UDbconnect(){ 
     $DBinfo=USettings::GSettings(); 
     $DBhost=$DBinfo['UDbhost']; 
     $DBname=$DBinfo['UDbname']; 
     $DBusername=$DBinfo['UDbusername']; 
     $DBpassword=$DBinfo['UDbpassword']; 
     $this->link=mysql_connect($DBhost,$DBusername,$DBpassword); 
     mysql_select_db($DBname); 
    } 
    . 
    . 
    . 
} 
관련 문제