无法使用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,并没有能够找到任何相对类似的问题。
您连续两次调用$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
循环体之前检查你并不需要在这个片段中的第一行。
是的,工作!非常感谢。但是'!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将成为你程序调试中最好的朋友)
'mysql_error()' 2014-09-20 23:58:24
是的肯定,感谢指出:) – 2014-09-21 00:01:05
这是奇怪的,你选择在这个'SELECT * FROM userdata'中的所有行,你应该只是期待1行? – Ghost 2014-09-21 00:09:21