创建一个PHP函数来返回MySQL结果

7

我正在尝试创建一个函数,它将返回一个mysql查询,然后我可以循环遍历并处理结果,但似乎无法正常工作。我可能甚至没有用正确的方法。

function GetAccounts($username){
require("dbconn.php");
$result = mysql_query("SELECT * FROM `accounts` WHERE `username` = '$username' ") or trigger_error(mysql_error()); 
return "$result";
}

$result = GetAccounts($username);
while($row = mysql_fetch_array($result)){ 
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
$theusername = $row['theusername'];
$thepassword = $row['thepassword'];
echo $theusername;
}

我收到的错误信息是
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

我尝试将上述所有内容加载到函数中,但每次只能得到单个结果。由于我需要处理每个结果,所以“我认为”上述方法是我想要的方式,但如果有更好的方式或者我做错了什么,请告诉我。
当我使用用户名回显函数时,我得到以下结果:
Resource id #5
2个回答

11

移除链接变量$result周围的双引号。

function GetAccounts($username){
  require("dbconn.php");
  $result = mysql_query("SELECT * FROM `accounts` WHERE `username` = '$username' ") or trigger_error(mysql_error()); 
  return $result;
 }

它很好地工作了,谢谢。那里到底发生了什么?为什么引用结果变量会弄乱它? - mrpatg
3
请看Tom在下面的回答。因为使用双引号意味着将$result强制转换为字符串。 - Pete

11

$result放在双引号中意味着它将被转换为字符串,因此不再是“资源”类型。请尝试使用以下代码:

return $result;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接