从mysql中计算数组结果

时间:2013-04-10 16:31:36

标签: php mysql arrays

我的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 个答案:

答案 0 :(得分:1)

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

$rows = mysql_num_rows($users);
if($rows==0) echo "No rows..";
else {
  foreach() {

答案 1 :(得分: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查询会执行查询!

答案 2 :(得分:0)

而不是

if(!array_count_values($usersList)){

使用

if(empty($usersList)){

答案 3 :(得分:0)

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

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

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