如何不使用$ row插入数据库

时间:2018-10-09 05:17:57

标签: php

我正在尝试将东西插入数据库,尽管我设法完成了它,但我只是想知道为什么以下内容不起作用,但是我是否将变量分配给$ row [] ;?首先,它将起作用:例如

$current_date = strip_tags(date("Y-m-d H:i:s"));
$date = strip_tags(date('Y-m-d H:i:s', strtotime("+5 minutes")));

$login_attempts += 1;

$sql2 = "
    UPDATE users 
    SET login_attempts = ?, login_failed_delay = ?
    WHERE user_uid = ?
";

if (!mysqli_stmt_prepare($stmt, $sql2)) {
    echo 'SQL statement failed';
} else {
    //Bind parameters to the placeholder
    mysqli_stmt_bind_param($stmt, "iss", $login_attempts, $date, $uid);
    //Run parameters inside database
    mysqli_stmt_execute($stmt);
}

但是,如果我这样做,它将起作用:

$current_date = strip_tags(date("Y-m-d H:i:s"));
$date = strip_tags(date('Y-m-d H:i:s', strtotime("+5 minutes")));
$login_attempts = $row['login_attempts'];
$login_attempts += 1;

$sql2 = "
    UPDATE users
    SET login_attempts = ?, login_failed_delay = ?
    WHERE user_uid = ?
";

if (!mysqli_stmt_prepare($stmt, $sql2)) {
    echo 'SQL statement failed';
} else {
    //Bind parameters to the placeholder
    mysqli_stmt_bind_param($stmt, "iss", $login_attempts, $date, $uid);
    //Run parameters inside database
    mysqli_stmt_execute($stmt);
}

1 个答案:

答案 0 :(得分:0)

在第一个示例中,$login_attempts没有使用任何有意义的数字,所以当您这样做时

$login_attempts += 1;

对该用户的先前值一无所知。而-当您这样做...

$login_attempts = $row['login_attempts'];
$login_attempts += 1;

您要在login_attempts的先前计数中加1(我认为是)。

或者,您可以仅在SQL语句中添加1 ...

  $sql2 = "UPDATE users
           SET login_attempts = login_attempts+1, 
               login_failed_delay = ?
           WHERE user_uid = ?";