mysqli로 변환하려고하는데 예상대로 어려움에 처해있다.mysqli가 여러 행을 가져 오는 중
다음과 같이 로그인 스크립트를 만들었습니다. 제대로 작동한다고 생각합니다. (난 그냥 싶어, 암호가 해시 될 필요가 알고 그것을 위로 처음 실행)
// POST variables
$username = ($_POST['username']);
$password = ($_POST['password']);
//Input Validations
if($username == '') {
$errmsg_arr[] = 'Username required';
$errflag = true;
}
if($password == '') {
$errmsg_arr[] = 'Password required';
$errflag = true;
}
//If there are input validations, redirect back to the login form
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: logon.php");
exit();
}
//prepared statements
if ($stmt = $mysqli->prepare("SELECT username, password FROM auth WHERE username='$username' AND password='$password'")) {
$stmt->execute();
/* bind variables to prepared statement */
$stmt->bind_result($user, $pass);
/* fetch values */
$stmt->fetch();
if ($user == $username && $pass == $password)
{
printf("Welcome %s", $user);
}
else
{
printf("Login failed");
}
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
?>
내가 로그인이 통과하면 내가
다음 않았다 mysqll와 함께 이전에, 내 세션 변수를 설정하려는
$qry="SELECT * FROM auth WHERE username='$username' AND password='$password'";
$result=mysql_query($qry);
//Check whether the query was successful or not
if($result) {
if(mysql_num_rows($result) > 0) {
//Login Successful
session_regenerate_id();
//Set session variables
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['ID'];
$_SESSION['SESS_USERNAME'] = $member['username'];
$_SESSION['SESS_FIRST_NAME'] = $member['fname'];
$_SESSION['SESS_PASSWORD'] = $member['password'];
$_SESSION['SESS_AUTH_LEVEL'] = $member['auth_level'];
session_write_close();
header("location: index");
exit();
}else {
//Login failed
$errmsg_arr[] = 'user name or password not found';
$errflag = true;
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: logon.php");
exit();
내 문제는 "$ member = mysql_fetch_assoc ($ result);"이라고 생각합니다. mysqli에서 어떻게하면됩니까? $mysqli->query(string)
, $mysqli_result->num_rows()
및 $mysqli_result->fetch_assoc()
: 내 준비된 문은 사용자 이름과 암호를 결합됨에 따라, 이전에 내가
로부터감사
당신은 기본적으로 기능을 사용할 필요가
는 HTTP의 예를 참조를 : //php.net/manual/en/mysqlinfo.api.choosing.php. – deceze
http://www.php.net/manual/en/class.mysqli-result.php를 보시면 fecth_assoc 배열이 있습니다. – Jerska
[mysqli로 옮길 필요가 없다는 말을 이미 들었습니다.] (http://stackoverflow.com/questions/16921090/moving-to-mysqli). 대신 PDO 준비 문으로 이동하십시오. 아니면 그냥 mysql을 유지 –