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