2012-08-28 26 views
0

我試圖寫簡單的用戶註冊頁面並使用簡單的DBCONNECTOR類與下面相同,當我嘗試將用戶發送到數據庫我得到mysql_query()error.this是我的PHP代碼和類請幫我解決問題 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頁:

<?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():提供的參數是不是在C一個有效的MySQL鏈路資源:\ XAMPP \ htdocs中\ UZU \ UConfig \ UDbconnector.php上線18

警告:mysql_close():提供的參數是不是在C一個有效的MySQL-Link的資源:\ XAMPP \ htdocs中\ UZU \ UConfig \ UDbconnector.php上線25

您註冊成功!

警告:無法修改頭文件信息 - 已在C:\ xampp \ htdocs \ uzu \ register.php中發送的頭文件(輸出在C:\ xampp \ htdocs \ uzu \ UConfig \ UDbconnector.php:18中開始)線10

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

上述功能等同於:

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