[英]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.