一部のコードを 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++;
}
それは正しく機能しますか、それとも間違っていますか?