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