2009-08-18 9 views
6

Próbuję utworzyć funkcję, która zwróci zapytanie mysql, które mogę następnie przepuścić i obsłużyć wyniki, ale wydaje się, że nie działa. Być może nie robię tego w odpowiedni sposób.Tworzenie funkcji php do zwracania wyników 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; 
} 

Błąd I odbieranie jest

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource 

Próbowałem ładuje wszystkie powyższe do funkcji, ale może dostać tylko to, aby powrócić pojedynczy wynik za każdym razem. Ponieważ źle radzę sobie z każdym wynikiem, "myślę", że powyższy sposób jest taki, jak chcę to zrobić, ale daj mi znać, jeśli istnieje lepszy sposób lub co robię źle.

Kiedy echo funkcji z nazwą użytkownika, otrzymuję następujące;

Resource id #5 

Odpowiedz

9

Usuń podwójne cudzysłowy wokół zmiennej linkowej $result.

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

Udało się świetnie, dzięki. Co dokładnie się tam działo? Dlaczego cytowanie zmiennej wyniku zepsuło to? – mrpatg

+2

Zobacz odpowiedź Toma poniżej. Ponieważ używanie podwójnych cudzysłowów oznacza, że ​​wynik $ był rzutowany na ciąg znaków. – Pete

9

Umieszczenie $result wewnątrz cudzysłowów Oznacza to będzie rzutować na sznurku, a potem już nie jest typu „zasobów”. Zamiast tego spróbuj:

return $result; 
+2

+1, dzięki za wyjaśnienie – Pete

Powiązane problemy