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(): 指定された引数は、C:\xampp\htdocs\uzu\UConfig\UDbconnector.php の 18 行目の有効な 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 に答える