php中的类问题
我是类和对象的新手。这里我为类和对象中的mysql数据库连接编写了一些代码。在index.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
<?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()的位置在哪里?