2

我的 php 脚本有问题。我想检查我的脚本数组中是否有任何内容,如果没有回显消息,但是当数组为空时,它不会回显任何内容。

那是我的代码:

    include("mysql_connect.php");
$name = $_POST['playerName'];
$users = mysql_query('SELECT * FROM playerdata WHERE username LIKE "'.$name.'%"');
        if($name==""){
        echo 'Type in player name!';
    }else{
while($usersList= mysql_fetch_assoc($users)){
    if(!array_count_values($usersList)){
        echo 'Player not found';
    }else{
        echo $usersList['username'].', ';
    }
}//While end.
}//If name is empty end.
4

4 回答 4

1

问题似乎是,如果用户输入invalid名称,while loop则不会执行,因为查询根本找不到任何行,code应该如下

include("mysql_connect.php");
$name = $_POST['playerName'];

if( $name === "" ){
    echo 'Type in player name!';
} else {
    $users = mysql_query('SELECT * FROM playerdata WHERE username LIKE "'.$name.'%"');

    if ( mysql_num_rows($users) == 0) {
        echo "Invalid Player name provided";
    } else {
        while($usersList= mysql_fetch_assoc($users)){
        {
            echo $usersList['username'].', ';
        } //While end.
    }
}//empty name

笔记:

  1. 我有re-formatted代码,因为它看起来很丑
  2. 仅当用户为名称提供一些文本时才会执行查询,为什么execute当名称为empty!
于 2013-04-10T17:17:33.650 回答
1

如前所述,您必须在循环之前检查行。

$rows = mysql_num_rows($users);
if($rows==0) echo "No rows..";
else {
  foreach() {
于 2013-04-10T17:10:30.230 回答
0

代替

if(!array_count_values($usersList)){

利用

if(empty($usersList)){
于 2013-04-10T16:44:55.233 回答
0

如果 $users 为空,则不会执行您的 while 循环,因此条件:

if(!array_count_values($usersList)){
        echo 'Player not found';
   }

永远不会满足,因为它包含在一个永远不会运行的循环中。

于 2013-04-10T16:50:50.897 回答