0

这是我的主页中的内容:

$foo = new Foo();
$strQry=$foo->Client();
$user_data=mysql_fetch_object($user_res);
echo $user_data->clientid;

这是我的类文件中的内容:

class Foo
{
function Client() 
{
$strQry = "SELECT clientid FROM users";
$user_res = mysql_query($strQry) or die("Unable to select, Error: ".mysql_error());
return $user_res;
}
}

我不太擅长在 PHP 中使用类和函数,所以我收到此错误“无法选择,错误:用户 'nobody'@'localhost' 的访问被拒绝(使用密码:否)”

任何帮助将不胜感激!

4

2 回答 2

2

您的代码存在许多问题:

  • 你不应该使用mysql_*函数。它们已被弃用。如果您只是在学习将 PHP 与数据库一起使用,请以正确的方式进行操作并使用mysqlior PDO
  • 您需要确保您实际连接到数据库。也许你是,但这里没有显示,但这显然很关键。
  • 您打算从Client()方法调用中返回数据库结果。但是您没有使用将结果返回到的变量。

这段代码:

$strQry=$foo->Client();
$user_data=mysql_fetch_object($user_res);

应该:

$strQry=$foo->Client();
$user_data=mysql_fetch_object($strQry);

因为$strQry获取结果集资源。

  • 你只调用mysql_fetch_object()一次。根据您的查询,您可以在结果集中拥有任意数量的行。如果您想要所有这些,则需要遍历结果集并调用mysql_fetch_object()每一行。

也许是这样的:

$user_data= array();
while($row = mysql_fetch_object($strQry)) {
    $user_data[] = $row;
}
  • 如果您坚持使用已弃用的mysql_*函数,您可能至少要养成在函数中将数据库连接作为参数传递的习惯,以明确您正在使用哪个数据库连接。

所以做类似的事情:

mysql_query($strQry, $dbConn);
于 2013-04-26T16:56:15.003 回答
2

看起来您甚至没有连接到数据库。

这是一个很好的逐步演练,它应该向您展示如何使用 mysqli 或 pdo 连接到 mysql 数据库,这两种方式都是与 mysql 对话的更安全的方式。

http://codular.com/php-mysqli

于 2013-04-26T16:46:11.367 回答