无法使用PHP从MySQL数据库提取所有数据使用PHP

问题描述:

我有一个数据库有四个条目,我只是试图读取数据库中的所有条目。但无论我尝试什么,第一个入口都不会出现。无法使用PHP从MySQL数据库提取所有数据使用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'])条件检查也失败。

p.s:对不起,如果它似乎是一个没有意义的问题,是完全陌生的PHP,并没有能够找到任何相对类似的问题。

+1

'mysql_error()' 2014-09-20 23:58:24

+0

是的肯定,感谢指出:) – 2014-09-21 00:01:05

+0

这是奇怪的,你选择在这个'SELECT * FROM userdata'中的所有行,你应该只是期待1行? – Ghost 2014-09-21 00:09:21

您连续两次调用$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循环体之前检查你并不需要在这个片段中的第一行。

+0

是的,工作!非常感谢。但是'!empty($ row ['username'])和!empty($ row ['password'])'条件检查仍然失败。 – 2014-09-20 23:54:24

认为你需要到:

1)使用||而不是“或”和& &,而不是“和”

2)使用mysqli_fetch_assoc代替mysqli_fetch_array

3)你需要创建像$的用户名,$密码,然后独立变量,而重复做检查,如果这是真的 - 为这些变量分配用户名和密码。

而迭代放像后:

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

代替

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

4)使用简单的调试,如:后续代码var_dump($变量);死('调试点');

最后,调试一切。如果你在迭代器之后调试行,你会看到$ row变量等于null,所以你会得到错误。 (未来:xdebug将成为你程序调试中最好的朋友)