1

一部のコードを mysqli に更新しようとしていますが、一部が行き詰まっています。

MySQL_result を含む foreach ループがあり、その部分を mysqli の代替に更新する方法がわかりません。

<?php
function WA_AuthenticateUser($WA_Auth_Parameter){

    $UserAuthenticated = false;
    mysqli_select_db($WA_Auth_Parameter["connection"], $WA_Auth_Parameter["database"]);
    $WA_Auth_loginSQL = "SELECT `".implode('`,`', $WA_Auth_Parameter["sessionColumns"])."` FROM `".$WA_Auth_Parameter["tableName"]."` WHERE ";

    for($idx=0;$idx<count($WA_Auth_Parameter["columns"]);$idx++){
        $WA_Auth_loginSQL = sprintf($WA_Auth_loginSQL.(($idx!=0)?" AND ":" ")."`%s`=%s ", $WA_Auth_Parameter["columns"][$idx], WA_GetSQLValueString($WA_Auth_Parameter["columnValues"][$idx], $WA_Auth_Parameter["columnTypes"][$idx]));
    }
    $WA_Auth_RS = mysqli_query($WA_Auth_Parameter["connection"], $WA_Auth_loginSQL) or die(mysqli_error($WA_Auth_Parameter["connection"]));
    $WA_Auth_Rows = mysqli_num_rows($WA_Auth_RS);

    if($WA_Auth_Rows){
        $UserAuthenticated = true;

        $idx = 0;
// --------------------------------------------------------------------------------------------
        foreach ($WA_Auth_Parameter["sessionNames"] as $sessionName){
            $_SESSION[$sessionName] = mysql_result($WA_Auth_RS,0,$WA_Auth_Parameter["sessionColumns"][$idx]);
            $idx++;
        }
// --------------------------------------------------------------------------------------------

        if($blah!=""){
            header("Location: ".$blah);
            exit();
        }
    }

    if($blah2!=""){
        header("Location: ".$blah2);
        exit();
    }
}
?>

編集 -

だから多分、この関数を既存の関数の上に追加すると

function mysqli_result($res, $row, $field) { 
    $res->data_seek($row); 
    $datarow = $res->fetch_array(); 
    return $datarow[$field]; 
}

次に、その foreach ループを次のように変更します...

foreach ($WA_Auth_Parameter["sessionNames"] as $sessionName){
            $_SESSION[$sessionName] = mysqli_result($WA_Auth_RS,0,$WA_Auth_Parameter["sessionColumns"][$idx]);
            $idx++;
        }

それは正しく機能しますか、それとも間違っていますか?

4

0 に答える 0