簡體   English   中英

無法使用PHP從MySQL數據庫提取所有數據

[英]Cannot extract all data from MySQL database using PHP

我有一個包含四個條目的數據庫,而我只是想讀取數據庫中的所有條目。 但是無論我嘗試什么,第一項都不會出現。

select * from userdata輸出:

+-----------+-----------+
| username  | password  |
+-----------+-----------+
| admin     | admin     |
| arush     | arush     |
| root      | root      |
| superuser | superuser |
+-----------+-----------+

從我的PHP代碼輸出:

arush arush
root root
superuser superuser
SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY...This Completed

PHP代碼:

$query = mysqli_query($dbc,"SELECT * FROM userdata")
        or die(mysql_error()); 
        $row = mysqli_fetch_array($query);
        while($row = mysqli_fetch_array($query)) 
        {
            echo $row['username'] . " " . $row['password'];
            echo "\n";
        }
        if(!empty($row['username']) and !empty($row['password'])) 
        { 
            $_SESSION['username'] = $row['password']; 
            echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE..."; 
        } 
        else 
        { 
            echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY..."; 
        }

而且我猜想,因為第一行沒有顯示或為空, !empty($row['username']) and !empty($row['password'])條件檢查也失敗了。

ps:很抱歉,如果這似乎沒有道理,對PHP來說是全新的,並且找不到任何相對類似的問題。

您的調用$row = mysqli_fetch_array()連續兩次,在打印之前覆蓋了第一條記錄。 這就是為什么“管理員”從不出現的原因。

    $row = mysqli_fetch_array($query); // this puts the admin record in $row
    while($row = mysqli_fetch_array($query)) // this overwrites $row with the next record (root)

在進入while循環的主體之前,您無需執行此代碼段中的第一行並對其進行檢查。

認為您需要:

1)使用|| 而不是'or'和&&而不是'and'

2)使用mysqli_fetch_assoc代替mysqli_fetch_array

3)您需要創建自變量,例如$ username,$ password,然后在進行迭代時檢查並確認是否正確-為這些變量分配用戶名和密碼。

經過一陣子的迭代之后,輸入如下內容:

if(strlen($row['username']) > 0 && strlen($row['password']) > 0)

代替

if(!empty($row['username']) and !empty($row['password'])) 

4)使用簡單的調試,例如:var_dump($ variable); die('調試點');

最后,調試所有內容。 如果在while迭代器之后調試行,則會看到$ row變量等於null,因此會出錯。 (將來:xdebug將是您在編程調試中最好的朋友)

暫無
暫無

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

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