检查更新查询是否成功[PHP,mysqli]

时间:2017-02-19 13:42:14

标签: php mysqli

我正在使用PHP和mysqli,程序正在做的是它要求重置代码和电子邮件地址,如果在数据库中找到电子邮件添加和重置代码它设置密码, this部分功能正在运作

我需要这方面的帮助:我需要做的是告诉用户密码是否已设置,以便更新是否成功。

我在做什么:

$uinsert =  "UPDATE member SET password = '$password' WHERE emailadd = '$emailadd' AND resetCode = '$resetcode'";

    $update = mysqli_query($mysqli, $uinsert) or die(mysqli_error($mysqli));

     if(mysqli_affected_rows($update) == 1 ){ //ifnum
        header("location: ../index.php"); // Redirecting To Other Page
    }
    else{
        echo "<script> alert('Incorrect code, try again!');</script>";
    }

注意:$ mysqli是我的连接字符串

4 个答案:

答案 0 :(得分:4)

  

&#34; @ Fred-ii-非常感谢你的作品! - 58秒前的咖啡编码器&#34;

使用context 'when the request contains an authentication header' do it 'should return the user info' do user = create(:user) get URL, headers: authenticated_header(user) expect(response).to have_http_status(:ok) expect(response.content_type).to eq('application/vnd.api+json') expect(json_body["data"]["attributes"]["email"]).to eq(user.email) expect(json_body["data"]["attributes"]["name"]).to eq(user.name) end end 或根本不进行比较。

旁注:if(mysqli_affected_rows($mysqli) >0 )仅比较1,而不是==1,您可能尝试更新多行。然而,在极少数情况下,>0是必需的,之前我也遇到过这种情况;这就是我回答的原因。

>0使用连接,而不是查询的连接。

另外,如果您要存储纯文本密码,请使用affected_rows(),因为它更安全:

旁注:如果您决定转到该功能,请确保您根本不操作密码。散列/验证它可以解决这个问题,你这样做可能弊大于利,并限制密码。

I.e。:password_hash()的有效密码将被解释为test'123,并在使用test\'123时呈现为FALSE。

或者您可能仍在使用real_escape_string()根据您的其他问题Comparing/check if correct Password from mysqli database [hash_hmac]

和准备好的声明:

最好在标题后添加hash_hmac。否则,您的代码可能希望继续执行。

exit;

答案 1 :(得分:2)

if (mysqli_affected_rows($mysqli) == 1 ) {

由于mysqli_affected_rows()不使用查询$update作为参数,因此它使用连接变量:$mysqli

答案 2 :(得分:2)

更改mysqli_affected_rows()的参数,参数必须是mysql连接

mysqli_affected_rows($update)

mysqli_affected_rows($mysqli)

请参阅此参考 https://www.w3schools.com/php/func_mysqli_affected_rows.asp

答案 3 :(得分:1)

将您的mysqli连接对象($ connection)传递给 mysqli_affected_rows(connection_object)以检查受影响的行。

connection_object就像 - $con=mysqli_connect("localhost","bd_user","db_password","your_db_name");

所以,代码将是

if(mysqli_affected_rows($con)== 1 ){ 
   header("location: ../index.php"); 
}