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

前述のように、ループの前に行をチェックする必要があります。

$rows = mysql_num_rows($users);
if($rows==0) echo "No rows..";
else {
  foreach() {
于 2013-04-10T17:10:30.230 に答える
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 に答える