0

我正在尝试编写简单的用户注册页面并使用与下面相同的简单 DBCONNECTOR 类,当我尝试将用户发送到数据库时,我得到 mysql_query() 错误。这是我的 php 代码和类,请帮我解决问题

这是我的 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;
}
?>

当我尝试注册用户时,出现如下错误:

警告:mysql_query():提供的参数不是第 18 行 C:\xampp\htdocs\uzu\UConfig\UDbconnector.php 中的有效 MySQL-Link 资源

警告:mysql_close():提供的参数不是第 25 行 C:\xampp\htdocs\uzu\UConfig\UDbconnector.php 中的有效 MySQL-Link 资源

您注册成功!

警告:无法修改标头信息 - 标头已由第 10 行 C:\xampp\htdocs\uzu\register.php 中的(输出从 C:\xampp\htdocs\uzu\UConfig\UDbconnector.php:18 开始)发送

4

1 回答 1

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,你应该没问题。

更新

我还注意到您从未初始化链接。您应该在类构造函数中执行此操作,或者将其作为参数传递构造函数。

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);
    }
    .
    .
    .
}
于 2012-08-28T17:46:37.013 回答