我正在尝试将一些代码更新为 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++;
}
这会正常工作,还是我会出错?