简体   繁体   English

在mysqli中替换mysql_result

[英]mysql_result replacement in mysqli

So I'm in the process of transitioning my entire site to mysqli_* and came across my first problem which I cannot find a replacement for. 所以我正在将我的整个网站转换为mysqli_ *,并遇到了我无法找到替代品的第一个问题。 Basically I have a password_reset form that can only be accessed by a user with a link. 基本上我有一个password_reset表单,只有具有链接的用户才能访问。 Once the user enters the password_reset.php site, he needs to enter his temporary password before he can change his password. 一旦用户输入password_reset.php站点,他需要输入他的临时密码才能更改密码。 I use mysql_result to get the temporary password that is associated to the username entered via http POST. 我使用mysql_result来获取与通过http POST输入的用户名相关联的临时密码。

$link_users = mysqli_connect("$host", "$username", "$password", "$db_name") or die("cannot connect");
$results=mysqli_query($link_users, "SELECT temporary_password FROM $tbl_name");
$row = mysqli_fetch_array($results);


$new_pass1 = $_POST['new1_password'];
$new_pass2 = $_POST['new2_password'];

$new_encrypted_mypassword = sha1($new_pass1);

$temp_pass = $_POST['temp_password'];
$username_fetch = $_POST['temp_username'];
$temppass_database = mysqli_result(mysqli_query($link_users, "SELECT temporary_password FROM $tbl_name WHERE temporary_password='$temp_pass' AND username='$username_fetch'"), 0);

if ($temp_pass == $temppass_database && $new_pass1 == $new_pass2){
mysqli_query($link_users, "UPDATE $tbl_name SET password='$new_encrypted_mypassword' WHERE username='$username_fetch'");
}

elseif ($temp_pass != $temppass_database){
echo '<div class="alert">Invalid Temporary Password or Username!</div>';
}

// Delete temporary password
if ($temp_pass == $temppass_database && $new_pass1 == $new_pass2 ) {
mysqli_query($link_users, "UPDATE $tbl_name set temporary_password = null WHERE username='$username_fetch'");
echo '<div class="alert">Updated Password!</div>';
}

I hope you can help find an easy to implement solution to replace mysql_results. 我希望你能帮助找到一个易于实现的解决方案来取代mysql_results。 As you can see in my code above, I tried to use mysqli_result which does not work! 正如您在上面的代码中看到的,我尝试使用不起作用的mysqli_result!

EDIT: As @randomizer suggested; 编辑:正如@randomizer建议的那样; I updated my code and replaced mysql_result with: $temppass_database = mysqli_query($link_users, "SELECT temporary_password FROM $tbl_name WHERE temporary_password='$temp_pass' AND username='$username_fetch'")->fetch_object()->temporary_password; 我更新了我的代码并用以下代码替换了mysql_result: $temppass_database = mysqli_query($link_users, "SELECT temporary_password FROM $tbl_name WHERE temporary_password='$temp_pass' AND username='$username_fetch'")->fetch_object()->temporary_password;

Thanks for the help! 谢谢您的帮助!

You can use mysqli_query("yourquery")->fetch_object()->password; 你可以使用mysqli_query("yourquery")->fetch_object()->password;

Also have a look into prepared statements, it will make your work much easier: http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php 还要查看准备好的语句,它将使您的工作更轻松: http//www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM