php中的类问题

php中的类问题,php,Php,我是类和对象的新手。这里我为类和对象中的mysql数据库连接编写了一些代码。在index.php中,我有以下代码: <?php try { require_once('./lib/testdb.php'); $login = new Login(); } catch(Exception $error) { print $error->getMessage(); } /* Include the HTML for the

我是类和对象的新手。这里我为类和对象中的mysql数据库连接编写了一些代码。在index.php中,我有以下代码:

<?php 

  try {

    require_once('./lib/testdb.php');

    $login = new Login();

  }

  catch(Exception $error) {

    print $error->getMessage();

  }



  /* Include the HTML for the form */

  require_once('./lib/form.php');   

?>
<?php
  define("DB_HOST", "localhost");

  define("DB_USER", "root");

  define("DB_PASS", "root");
  class Login{
    private $username;
    private $password;
    public function getUsername() {

      return $this->username;

    }

    public function getPassword() {

      return $this->password;

    }

    public function getEncryptedPassword() {

      return sha1($this->password);

    } 

   public function connectToMySQL() {  

      @mysql_connect(DB_HOST, DB_USER, DB_PASS) OR die("Cannot connect to MySQL server!");  

      mysql_select_db("dd") OR die("Cannot select database!");

    }


    public function verifyLogin($username, $password) {

      $this->username = $username;

      if(empty($username) || empty($password)) {

        throw new Exception(Login::ERROR_EMPTY_LOGIN);

      }  

      else {

      $query = sprintf("SELECT * FROM 'users' WHERE username = '%s' AND 

            userpass = sha1('%s') ");

            $this->clean($username),

            $this->clean($password));



      $result = mysql_query($query) OR die('Cannot perform query!');  
        while($info = mysql_fetch_array( $result )) 
      {
          echo $info['username'];
      }
}
?>
问题是它没有从显示“无法执行查询”的数据库中获取任何数据或什么都没有。因此请指导我。这是我在类和对象中的第一个项目。

使用
mysql\u error()
来找出真正的问题所在

$result = mysql_query($query) OR die('Cannot perform query: ' . mysql_error());  
使用
mysql\u error()
找出真正的问题所在

$result = mysql_query($query) OR die('Cannot perform query: ' . mysql_error());  

您的
sprintf
语句中有一个错误:

$query = sprintf("SELECT * FROM 'users' WHERE username = '%s' AND 
        userpass = sha1('%s') ");    // here
        $this->clean($username),
        $this->clean($password));
应该是:

$query = sprintf("SELECT * FROM 'users' WHERE username = '%s' AND 
        userpass = sha1('%s') ",    // corrected
        $this->clean($username),
        $this->clean($password));

由于该错误,您没有将用户名和密码添加到查询中。

您的
sprintf
语句中有一个错误:

$query = sprintf("SELECT * FROM 'users' WHERE username = '%s' AND 
        userpass = sha1('%s') ");    // here
        $this->clean($username),
        $this->clean($password));
应该是:

$query = sprintf("SELECT * FROM 'users' WHERE username = '%s' AND 
        userpass = sha1('%s') ",    // corrected
        $this->clean($username),
        $this->clean($password));

由于该错误,您没有将用户名和密码添加到查询中。

必须使用括号构造该类:
new Login()
新登录

<?php 

  try {

    require_once('./lib/testdb.php');

    $login = new Login();

  }

必须使用括号构造类:
新建登录()
新登录

<?php 

  try {

    require_once('./lib/testdb.php');

    $login = new Login();

  }

保持理智和生产力,并开始查看mysql日志文件的最后一行,查找这些简单错误

或者,为了暂时确定问题是什么

echo $query;

保持一定的理智和生产力,并开始查看mysql日志文件中的最后一行,以了解这些简单错误

或者,为了暂时确定问题是什么

echo $query;

但是这个错误应该抛出语法错误,而不是前面提到的错误。可能这只是在向问题添加代码时出现的复制粘贴错误。这应该会引发错误,但不会显示任何类似的内容。请帮助我解决此问题problem@kayahr这是真的;没有实际的代码,任何人都无能为力@user614208请发布实际代码并执行
var\u dump($query)
,您的sql语句中可能存在语法错误。但此错误应引发语法错误,而不是前面提到的错误。可能这只是在向问题添加代码时出现的复制粘贴错误。这应该会引发错误,但不会显示任何类似的内容。请帮助我解决此问题problem@kayahr这是真的;没有实际的代码,任何人都无能为力@user614208请发布实际代码并执行
var\u dump($query)
,您的sql语句中可能有语法错误。从这里调用$login->verifyLogin()的位置在哪里?从这里调用$login->verifyLogin()的位置在哪里?