簡體   English   中英

用條件計數行?

[英]Counting rows with conditions?

在您說它已經回答之前,我已經嘗試了一切,從字面上看。

我試圖用兩個WHERE子句計算mysqli查詢中的行數。

if (isset($_POST['member_name']) and isset($_POST['memeber_password'])) {
    $member_name_input = mysqli_real_escape_string($query, $_POST['member_name']);
    $member_password_input = mysqli_real_escape_string($query, $_POST['member_password']);

    $result = mysqli_query($query, "SELECT count(*) AS member_count FROM `members` WHERE `member_name` = '$member_name_input' AND `member_password` = '$member_password_input'") or die(mysqli_error($query));
    $counter = $row['member_count'];

    if ($counter = 1) {
        $result = mysqli_query($query, "SELECT * FROM `members` WHERE `member_name`='$member_name_input' AND `member_password`='$member_password_input'") or die(mysqli_error($query));
        $row = mysqli_fetch_array($result);
        $member_suspended = $row['member_suspended'];
        $member_validation = $row['member_validation'];
    }

    if ($member_suspended < time() and $member_validation = 2) {
        $_SESSION['member_id'] = $row['member_id'];
        echo $counter;
    } elseif ($member_suspended >= time()) {
        $suspension_date = date('d. m. y.', $member_suspended);
        echo '<div class="left_container"><h3>You are suspended until '.$suspension_date.'.</h3></div>';
    } elseif ($member_validation = 1) {
        echo '<div class="left_container"><h3>Your account has not been confirmed, yet.</h3></div>';
    } else {
        echo '<div class="left_container"><h3>Login unsuccessful.</h3></div>';
    }
} 

我的問題是,當我嘗試使用無效的密碼和/或用戶名登錄(表中不存在該組合)時,$ counter仍為1,並且滿足第一個if語句的要求。

我嘗試過以多種方式對行進行計數,但沒有一種有效。

其他一些嘗試是:

$counter = 0;
while ($row = mysqli_fetch_array($result)) {
++$counter;
}

$counter = mysqli_num_rows($result);

我只是想提出一種方法來成功登錄我的用戶,並顯示錯誤消息以指示無效的登錄嘗試。

感謝您抽出寶貴的時間閱讀本文檔,並為您提供幫助。 :)

if ($counter = 1) {

這將始終= 1,假設您的意思是

if ($counter == 1) {

您需要先從結果中提取行,然后才能設置計數器。

更改

$result = mysqli_query($query, "SELECT count(*) AS member_count FROM `members` WHERE `member_name` = '$member_name_input' AND `member_password` = '$member_password_input'") or die(mysqli_error($query));
$counter = $row['member_count'];

$result = mysqli_query($query, "SELECT count(*) AS member_count FROM `members` WHERE `member_name` = '$member_name_input' AND `member_password` = '$member_password_input'") or die(mysqli_error($query));
$row = mysqli_fetch_assoc($result);
$counter = $row['member_count'];

以下查詢非常適合我:

SELECT count(*)AS member_count FROM members member_name ='$ member_name_input'AND member_password ='$ member_password_input'

如果找不到匹配的記錄,則返回0;否則返回匹配的記錄數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM