2

重複の可能性:
mysql_fetch_array() は、パラメーター 1 がリソースであると想定しており、select でブール値が指定されています

次のMySQL関数があります:

DELIMITER $$
DROP FUNCTION IF EXISTS DoUsernameAndPasswordMatch$$
CREATE FUNCTION DoUsernameAndPasswordMatch(
    UserLogin VARCHAR(20),
    UserPass VARCHAR(20)
)
RETURNS BOOLEAN
BEGIN
DECLARE userCount BOOLEAN;

    SELECT COUNT(*) INTO userCount
    FROM Users_Login 
    WHERE Users_Login.UserLogin = UserLogin AND Users_Login.UserPass = SHA1(UserPass);

    RETURN userCount;    
END$$
DELIMITER ;

次のようにPHPから呼び出します。

$username_escaped = escapeMySQLParam($_POST["user"]);
$userpass_escaped = escapeMySQLParam($_POST["pass"]);

$mysql_query = "SELECT DoUsernameAndPasswordMatch('$username_escaped', '$userpass_escaped')";
$mysql_results = mysql_query($mysql_query);
$mysql_row = mysql_fetch_row($mysql_results);

しかし、次のエラーが表示されます。

Warning: mysql_fetch_row() expects parameter 1 to be resource, 
boolean given in D:\xampp\webdesktop\login.php on line 22

私はエラーを理解し、それを修正して回避しようとしましたが、成功しませんでした。PHPでMySQLからINTEGER値を取得することは可能ですか?

または、これを行うためのより良い方法をアドバイスしていただけますか。

感謝!

4

1 に答える 1

0

動作するように次の変更を行います。

    DELIMITER $$
DROP FUNCTION IF EXISTS DoUsernameAndPasswordMatch$$
CREATE FUNCTION DoUsernameAndPasswordMatch(
    UserLogin VARCHAR(20),
    UserPass VARCHAR(20)
) RETURNS TEXT
BEGIN
DECLARE userCount TEXT;

    SELECT COUNT(*) INTO userCount
    FROM Users_Login 
    WHERE Users_Login.UserLogin = UserLogin AND Users_Login.UserPass = SHA1(UserPass);

    RETURN userCount;    
END$$
DELIMITER ;
于 2012-05-24T18:56:14.260 に答える