如何解决php中未定义的错误

如何解决php中未定义的错误,php,Php,一次又一次地犯这个错误 因为,您正在尝试访问未定义的数组的索引。在您的情况下,您正试图从数组$\u GET访问索引itr\u no和epi\u id 验证请求的URL查询字符串(如果它包含或可能是您的表单) 或 在访问该值之前,请检查该值是否已设置 <?php $conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error()); $q = $conn->query("SELECT * FR

一次又一次地犯这个错误

因为,您正在尝试访问未定义的数组的索引。在您的情况下,您正试图从数组
$\u GET
访问索引
itr\u no
epi\u id

  • 验证请求的URL查询字符串(如果它包含或可能是您的表单)
  • 在访问该值之前,请检查该值是否已设置

    <?php
    
       $conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
       $q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$_GET[itr_no]' && `epi_id` = '$_GET[epi_id]'") or die(mysqli_error());
       $f = $q->fetch_array();
    
    ?>
    
  • 一次又一次地犯这个错误

    因为,您正在尝试访问未定义的数组的索引。在您的情况下,您正试图从数组
    $\u GET
    访问索引
    itr\u no
    epi\u id

  • 验证请求的URL查询字符串(如果它包含或可能是您的表单)
  • 在访问该值之前,请检查该值是否已设置

    <?php
    
       $conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
       $q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$_GET[itr_no]' && `epi_id` = '$_GET[epi_id]'") or die(mysqli_error());
       $f = $q->fetch_array();
    
    ?>
    

  • 当您将url变量(用户直接输入)传递到数据库查询时,您的查询易受攻击

    用于检查我们使用的变量是否已定义

    更正代码应为:

    if(isset($_GET['itr_no']) && isset($_GET['epi_id'])){
    

    当您将url变量(用户直接输入)传递到数据库查询时,您的查询易受攻击

    用于检查我们使用的变量是否已定义

    更正代码应为:

    if(isset($_GET['itr_no']) && isset($_GET['epi_id'])){
    
    isset()
    用于检查变量是否已设置且不是
    null
    。详情:

    因此,在访问
    $variable
    之前,应该使用
    isset()
    。例如:

    $itr_no = isset($_GET['itr_no']) ? $_GET['itr_no'] : '';
    $epi_id = isset($_GET['epi_id']) ? $_GET['epi_id'] : '';
    
    $itr_no = $conn->real_escape_string($itr_no);
    $epi_id = $conn->real_escape_string($epi_id);
    
    $conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
    $q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$itr_no' && `epi_id` = '$epi_id'") or die(mysqli_error());
    $f = $q->fetch_array();
    
    上面的示例确保,如果设置了
    $example['id']
    ,则可以访问它。如果没有isset,即使
    $example['id']
    null
    或未定义,也会运行
    echo
    ,这将引发错误

    @techiemickey:然而,您的错误是由于您以错误的方式访问var造成的。您可以使用$\u GET['itr\u no']而不是$\u GET[itr\u no]

    isset()
    用于检查变量是否已设置且不为空。详情:

    因此,在访问
    $variable
    之前,应该使用
    isset()
    。例如:

    $itr_no = isset($_GET['itr_no']) ? $_GET['itr_no'] : '';
    $epi_id = isset($_GET['epi_id']) ? $_GET['epi_id'] : '';
    
    $itr_no = $conn->real_escape_string($itr_no);
    $epi_id = $conn->real_escape_string($epi_id);
    
    $conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
    $q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$itr_no' && `epi_id` = '$epi_id'") or die(mysqli_error());
    $f = $q->fetch_array();
    
    上面的示例确保,如果设置了
    $example['id']
    ,则可以访问它。如果没有isset,即使
    $example['id']
    null
    或未定义,也会运行
    echo
    ,这将引发错误

    @techiemickey:然而,您的错误是由于您以错误的方式访问var造成的。您可以使用$\u GET['itr\u no']而不是$\u GET[itr\u no]

    来检查$\u GET请求值

    if (isset($example['id']) {
        echo $example['id'];
    }
    
    <?php
    
       $conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
    
       //Checkes Whether itr_no And epi_id is available or not
       //runs when all are available
       if(!empty($_GET['itr_no']) && !empty($_GET['epi_id'])){
         $q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$_GET[itr_no]' && `epi_id` = '$_GET[epi_id]'") or die(mysqli_error());
         $f = $q->fetch_array();
       }
    
    ?>
    
    用于检查您的$\u GET请求值

    if (isset($example['id']) {
        echo $example['id'];
    }
    
    <?php
    
       $conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
    
       //Checkes Whether itr_no And epi_id is available or not
       //runs when all are available
       if(!empty($_GET['itr_no']) && !empty($_GET['epi_id'])){
         $q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$_GET[itr_no]' && `epi_id` = '$_GET[epi_id]'") or die(mysqli_error());
         $f = $q->fetch_array();
       }
    
    ?>
    

    您需要将表单数据包围起来,例如,
    $GET['id']
    您编辑的代码

    $itr_no = isset($_GET['itr_no']) ? $_GET['itr_no'] : '';
    $epi_id = isset($_GET['epi_id']) ? $_GET['epi_id'] : '';
    

    您需要围绕您的表单数据,例如,
    $GET['id']
    您编辑的代码

    $itr_no = isset($_GET['itr_no']) ? $_GET['itr_no'] : '';
    $epi_id = isset($_GET['epi_id']) ? $_GET['epi_id'] : '';
    

    这是一个更好的解决方案,因为它分离了数据源,允许您在点击数据库代码之前执行某种验证。@TechieMickey,请通过打印您从数据库中获得的内容来调试代码,您将得到问题。这是一个更好的解决方案,因为它分离了数据源,并允许您在访问数据库代码之前执行某种验证。@TechieMickey,请通过打印您从数据库中获得的内容来调试代码,您将得到问题