未定义的索引使用MySQL、PHP

未定义的索引使用MySQL、PHP,php,mysql,ajax,xampp,Php,Mysql,Ajax,Xampp,我搜索了类似的问题,但没有找到解决问题的方法。如何在PHP中调试MySQL问题?找到这些错误的原因总是非常耗时。在JavaScript中查找/修复错误要容易得多 错误: 注意:未定义的索引:第48行C:\xampp\htdocs\Noobs\u Search\serverCode\findPlayers.php中的角色 注意:第49行C:\xampp\htdocs\Noobs\u Search\serverCode\findPlayers.php中的未定义索引:gender 它指的是以下几行:

我搜索了类似的问题,但没有找到解决问题的方法。如何在PHP中调试MySQL问题?找到这些错误的原因总是非常耗时。在JavaScript中查找/修复错误要容易得多

错误:

注意:未定义的索引:第48行C:\xampp\htdocs\Noobs\u Search\serverCode\findPlayers.php中的角色

注意:第49行C:\xampp\htdocs\Noobs\u Search\serverCode\findPlayers.php中的未定义索引:gender

它指的是以下几行:

$role   = $row['role'];
$g      = $row['gender'];
PHP代码:

<?php

require "connect.php";

$searchBy   = $_GET["field"]; 
$searchText = $_GET["text"];

$playerSQL  =   "SELECT * 
                 FROM vw_playerTeamName";

if( isset($GET_["role"]) )
{
    $role       = $_GET["role"];
    $playerSQL .= " AND role = $role";//  .= is same as +=
}

if( isset($GET_["gender"]) )
{
    $gender     = $_GET["gender"];
    $playerSQL .= " AND gender = $gender";//  .= is same as +=
}

$result = $mysqli->query($playerSQL);

$pTable =   "<div class='table'>
        <div class='heading'>
            <div class='cell'>ID</div>
            <div class='cell'>First</div>
            <div class='cell'>Last</div>
            <div class='cell'>Email</div>
            <div class='cell'>Team</div>
            <div class='cell'>Gender</div>
            <div class='cell'>Role</div>
        </div>";

while($row = $result->fetch_array())
{
    $ID     = $row['ID'];
    $first  = $row['first'];
    $last   = $row['last'];
    $email  = $row['email'];
    $team   = $row['team_name'];
    $role   = $row['role'];
    $g      = $row['gender'];

    $pTable .=  "<div class='row'>
                    <div class='cell'>$ID</div>
                    <div class='cell'>$first</div>
                    <div class='cell'>$last</div>
                    <div class='cell'>$email</div>
                    <div class='cell'>$team</div>
                    <div class='cell'>$g</div>
                    <div class='cell'>$role</div>
                </div>";
}

$pTable .= "</div>";

$mysqli->close();

echo $pTable;
?>
$(document).ready(function()
{
    
    $('#search').click(function()
    {
        var searchField = $("#searchType").val();
        var searchText  = $("#searchText").val();
        var g           = $("input[name=gender]:checked").val();
        var r           = $("input[name=role]:checked").val();
        
        $.get("serverCode/findPlayers.php",
        {
            field:searchField,
            text:searchText,
            role:r,
            gender:g
        },function(response)
        {
            $("#placeholder").html(response);
        });

    });
    
});
<?php

$doc = "<!DOCTYPE html>
            <html>
                <head>
                    <title>Noobs Search Page</title>
                    <script src='clientCode/jquery-1.12.2.min.js'></script>
                    <script src='clientCode/search.js'></script>
                    <link href='css/tableStyle.css' rel='stylesheet'>
                </head>
            <body>
            
                <select id='searchType'>
                    <option value='first'>First Name</option>
                    <option value='last'>Last Name</option>
                    <option value='email'>Email</option>
                </select>
                
                <input id='searchText' type='text' name='text'>
                
                <p>Role<br>
                    <input type='radio' name='role' value='Pion'>Pion
                    <input type='radio' name='role' value='Captain'>Captain
                    <input type='radio' name='role' value='Assistant Captain'>Assistant Captain
                </p>
                
                <p>Gender<br>
                    <input type='radio' name='gender' value='M'>Male
                    <input type='radio' name='gender' value='F'>Female
                </p>
                
                <p>
                    <input type='button' name='search' id='search' value='search'>
                    <input type='button' name='clear' value='clear'>
                </p>
                
                <div id='placeholder'></div>

            </body>
        </html>";
        
echo $doc;
?>
HTML代码:

<?php

require "connect.php";

$searchBy   = $_GET["field"]; 
$searchText = $_GET["text"];

$playerSQL  =   "SELECT * 
                 FROM vw_playerTeamName";

if( isset($GET_["role"]) )
{
    $role       = $_GET["role"];
    $playerSQL .= " AND role = $role";//  .= is same as +=
}

if( isset($GET_["gender"]) )
{
    $gender     = $_GET["gender"];
    $playerSQL .= " AND gender = $gender";//  .= is same as +=
}

$result = $mysqli->query($playerSQL);

$pTable =   "<div class='table'>
        <div class='heading'>
            <div class='cell'>ID</div>
            <div class='cell'>First</div>
            <div class='cell'>Last</div>
            <div class='cell'>Email</div>
            <div class='cell'>Team</div>
            <div class='cell'>Gender</div>
            <div class='cell'>Role</div>
        </div>";

while($row = $result->fetch_array())
{
    $ID     = $row['ID'];
    $first  = $row['first'];
    $last   = $row['last'];
    $email  = $row['email'];
    $team   = $row['team_name'];
    $role   = $row['role'];
    $g      = $row['gender'];

    $pTable .=  "<div class='row'>
                    <div class='cell'>$ID</div>
                    <div class='cell'>$first</div>
                    <div class='cell'>$last</div>
                    <div class='cell'>$email</div>
                    <div class='cell'>$team</div>
                    <div class='cell'>$g</div>
                    <div class='cell'>$role</div>
                </div>";
}

$pTable .= "</div>";

$mysqli->close();

echo $pTable;
?>
$(document).ready(function()
{
    
    $('#search').click(function()
    {
        var searchField = $("#searchType").val();
        var searchText  = $("#searchText").val();
        var g           = $("input[name=gender]:checked").val();
        var r           = $("input[name=role]:checked").val();
        
        $.get("serverCode/findPlayers.php",
        {
            field:searchField,
            text:searchText,
            role:r,
            gender:g
        },function(response)
        {
            $("#placeholder").html(response);
        });

    });
    
});
<?php

$doc = "<!DOCTYPE html>
            <html>
                <head>
                    <title>Noobs Search Page</title>
                    <script src='clientCode/jquery-1.12.2.min.js'></script>
                    <script src='clientCode/search.js'></script>
                    <link href='css/tableStyle.css' rel='stylesheet'>
                </head>
            <body>
            
                <select id='searchType'>
                    <option value='first'>First Name</option>
                    <option value='last'>Last Name</option>
                    <option value='email'>Email</option>
                </select>
                
                <input id='searchText' type='text' name='text'>
                
                <p>Role<br>
                    <input type='radio' name='role' value='Pion'>Pion
                    <input type='radio' name='role' value='Captain'>Captain
                    <input type='radio' name='role' value='Assistant Captain'>Assistant Captain
                </p>
                
                <p>Gender<br>
                    <input type='radio' name='gender' value='M'>Male
                    <input type='radio' name='gender' value='F'>Female
                </p>
                
                <p>
                    <input type='button' name='search' id='search' value='search'>
                    <input type='button' name='clear' value='clear'>
                </p>
                
                <div id='placeholder'></div>

            </body>
        </html>";
        
echo $doc;
?>

看起来你把它拼错了,它是$\u GET

 if( isset($_GET["role"]) )
{
    $role       = $_GET["role"];
    $playerSQL .= " AND role = $role";//  .= is same as +=
}

if( isset($_GET["gender"]) )
{
    $gender     = $_GET["gender"];
    $playerSQL .= " AND gender = $gender";//  .= is same as +=
}

尝试将if语句重新格式化为该语句,并在
$platerSQL
上添加
WHERE

$playerSQL  =   "SELECT * 
                 FROM vw_playerTeamName";

if( isset($GET_["role"]) )
{
    $role       = $_GET["role"];
    $playerSQL .= " WHERE role = '$role'";//  .= is same as +=

    if( isset($GET_["gender"]) )
    {
        $gender     = $_GET["gender"];
        $playerSQL .= " AND gender = '$gender'";//  .= is same as +=
        //$playerSQL will be SELECT * FROM vw_playerTeamName WHERE role = '$role' AND gender = '$gender'
    }

    //if there is no gender playerSQL will be SELECT * FROM vw_playerTeamName WHERE role = '$role'
}

elseif( isset($GET_["gender"]) )
{
    $gender     = $_GET["gender"];
    $playerSQL .= " WHERE gender = '$gender'";//  .= is same as +=
    // $playerSQL will be SELECT * FROM vw_playerTeamName WHERE gender = '$gender'

}

$result = $mysqli->query($playerSQL);
因为如果两个条件都为true,则旧语句会将查询字符串转换为该字符串。查询字符串上缺少
WHERE
条件

$playerSQL  =   "SELECT * FROM vw_playerTeamName AND role = $role AND gender = $gender";

你能不能在while循环之前尝试打印($result->fetch\u array()
这个
$result->fetch\u array())然后你会得到数组数据作为key=>value这个键是索引试着使用结果中的同一个键我在数组中寻找什么?数组([0]=>4[ID]=>4[1]=>Esme[first]=>Esme[2]=>Torosa[last]=>Torosa[3]=>eeyoro@mail.abc[电子邮件]=>eeyoro@mail.abc[4]=>1[team_id]=>1[5]=>Ups[team_name]=>Ups)如果未设置
$role
$gender
(即它们不在GET请求中),则不会将它们添加到mysqli查询中,因此,mysqli查询返回的结果中未定义
$row['role']
$row['gender']
,因此出现错误。检查JavaScript中是否获得了预期值,并处理PHP代码中未设置变量的情况。添加一点,即使mysqli查询中填充了单选按钮值,你会得到类似于
SELECT*FROM vw_playerTeamName AND role=$role AND gender=$gender
的东西,这在语法上是不正确的:你需要在WHERE子句中加上单引号,因为变量看起来是字符串。将收到的信息发回,因为数据似乎没有发送过来